/***
 * @Author:
 * @Date: 2023-05-06 09:32:57
 * @LastEditors: xxx
 * @LastEditTime: 2023-05-06 09:34:41
 * @Description:常用表定义
 * @email:
 * @Copyright (c) 2023 by xxx, All Rights Reserved.
 */
#ifndef __HART_COMMON_TABLES_SPECIFICATION_H__
#define __HART_COMMON_TABLES_SPECIFICATION_H__
#include "lib.h"

#define HART_PACKED3_LEN 3U
#define HART_PACKED6_LEN 6U
#define HART_PACKED8_LEN 8U
#define HART_PACKED10_LEN 10U
#define HART_PACKED12_LEN 12U
#define HART_PACKED16_LEN 16U
#define HART_PACKED24_LEN 24U
#define HART_PACKED32_LEN 32U
#define HART_DATE_LEN 3U

// 5.0响应代码定义
typedef enum
{
    // No Command-Specific Errors                   成功
    RESPONSE_COMMUNICATION_CODE_0 = 0x00,
    // Undefined                                    目前尚未定义。该代码用于协议的早期版本，不得用于任何现场设备。
    RESPONSE_COMMUNICATION_CODE_1 = 0x01,
    // Invalid Selection                            此代码表示未执行该命令。现场设备未返回响应数据。
    RESPONSE_COMMUNICATION_CODE_2 = 0x02,
    // Passed Parameter Too Large	                传递的参数太长
    RESPONSE_COMMUNICATION_CODE_3 = 0x03,
    // Passed Parameter Too Small	                传递的参数太短
    RESPONSE_COMMUNICATION_CODE_4 = 0x04,
    // Too Few Data Bytes Received	                接收的数据长度不足
    RESPONSE_COMMUNICATION_CODE_5 = 0x05,
    // Device-specific Command Error	            设备特定命令错误，未定义的
    RESPONSE_COMMUNICATION_CODE_6 = 0x06,
    // In Write Protect Mode	                    处于写保护模式
    RESPONSE_COMMUNICATION_CODE_7 = 0x07,
    /**
     *  1.Update Failure                            更新失败
        2.Update Times Adjusted                     更新时间已调整
        3.Update Period Increased                   更新周期已增加
        4.Set to Nearest Possible Value             设置为最接近的可能值
        5.All but running delayed responses flushed	所有但运行延迟响应已刷新
    */
    RESPONSE_COMMUNICATION_CODE_8 = 0x08,
    /**
     *  1.Lower Range Value Too High                下限值高于传感器上限或超出其他物理设备限制
        2.Applied Process Too High                  应用于现场设备的过程过高
        3.Invalid Burst Message                     字段不支持突发消息编号
        4.Configuration Change Counter Mismatch     配置更改计数器值与当前设备值不匹配
        5.Insufficient bandwidth                    没有足够的带宽来启用指定的突发消息
        6.Not In Proper Current Mode	            现场设备未处于固定电流模式或电流未设置为正确值
    */
    RESPONSE_COMMUNICATION_CODE_9 = 0x09,
    /**
     *  1.Lower Range Value Too Low                 下限值低于传感器下限或超出某些其他物理设备限制
        2.Applied Process Too Low                   应用于现场设备的过程过低
        3.Invalid Local Panel Lock Code	            本地面板密码无效
    */
    RESPONSE_COMMUNICATION_CODE_10 = 0x0A,
    /**
     *  1.Upper Range Value Too High                上限值高于传感器上限
        2.In Multi-drop Mode                        设备处于多点状态，因此无法执行命令
        3.Invalid Device Variable Code              请求的命令或操作不支持此设备变量。换句话说，设备变量是有效的，但您不能将其与此命令一起使用
        4.Invalid Device Variable Classification    写入命令中包含的设备变量分类代码对该设备变量无效
        5.Trim Error,Excess Correction Attempted    测量值和实际值之间的差异太大，以至于现场设备无法在计算中校正该值
        6.Cannot Lock Panel	                        现场设备处于不允许锁定本地面板的模式（例如，操作员已经在使用本地面板）
    */
    RESPONSE_COMMUNICATION_CODE_11 = 0x0B,
    /**
     *  1.Upper Range Value Too Low                 上限值低于传感器下限
        2.Invalid Units Code                        在该命令、设备变量或动态变量的上下文中不支持请求的单位代码
        3.Invalid SOLT Number                       用于捕获动态变量或设备变量的请求插槽代码对于指定的命令号无效
        4.Invalid Mode Selection	                请求的（例如，回路电流）模式无效
    */
    RESPONSE_COMMUNICATION_CODE_12 = 0x0C,
    /**
     *  1.Invalid Transfer Function Code                此模拟通道或动态变量不支持请求的传递函数
        2.Upper and Lower Range Values Out Of Limits    上限和下限范围值超出传感器限制或超出了其他一些物理设备限制。
        3.Computation Error                             当现场设备试图在主机应用程序的命令请求中应用新值时，遇到了一个算术错误。
        4.Command Number Not Supported	                此现场设备不支持所请求的要捕获的命令号。
    */
    RESPONSE_COMMUNICATION_CODE_13 = 0x0D,
    /**
     *  1.Span Too Small                                                            跨度，由"上范围值”和"下范围值”确定。小于最小跨度
        2.Dynamic Variables Returned for Device Variables                           现场设备不公开任何设备变量。在指令9中，为代码0-3返回动态变量。
        3.Update Rate Uncertain                                                     当设备未加入Wireless HART网络时，它还不知道是否有足够的容量来满足所需的通知参数。
        4.New Lower Range Value Pushed Upper Range Value Over Transducer Limit      现场设备使用了要求的较低范围值，并进行了修改相应的上限值。不幸的是，上范围值已饱和，跨度未保持。
    */
    RESPONSE_COMMUNICATION_CODE_14 = 0x0E,
    // Invalid Analog Channel Code Number	该现场设备中不存在模拟通道代码编号
    RESPONSE_COMMUNICATION_CODE_15 = 0x0F,
    // Access Restricted	设备在当前操作模式下不允许使用该命令。例如，设备被锁定（参见命令71)
    RESPONSE_COMMUNICATION_CODE_16 = 0x10,
    // Invalid Device Variable Index	请求的设备变量在此现场设备中不存在
    RESPONSE_COMMUNICATION_CODE_17 = 0x11,
    // Invalid Units Code	请求的单位代码在此命令、设备变量或动态变量的上下文中不受支持
    RESPONSE_COMMUNICATION_CODE_18 = 0x12,
    // Device Variable Index Not Allowed	请求的命令或操作不支持此设备变量。换句话说，设备变量是有效的但不能将它与此命令一起使用
    RESPONSE_COMMUNICATION_CODE_19 = 0x13,
    // Invalid Extended Command Number	扩展命令编号少于512
    RESPONSE_COMMUNICATION_CODE_20 = 0x14,
    // Invalid I/O card number	I/O系统在命令的请求数据字节中指定的 （逻辑）插槽中没有I/O卡
    RESPONSE_COMMUNICATION_CODE_21 = 0x15,
    // Invalid Channel number	无效频道号码I/O卡没有在命令的请求数据字节中指定的通道
    RESPONSE_COMMUNICATION_CODE_22 = 0x16,
    // Sub-device Response Too Long	子设备响应太I/O系统从子设备接收到的响应包含的字节数超过了I/O系统在单个响长的 应数据包中可以转发的字节数。
    RESPONSE_COMMUNICATION_CODE_23 = 0x17,

    // 24-27 保留供高级别委员会今后确定。这些代码不能被任何制造商使用。

    // Invalid Range Units Code	无效的距离单位代码此模拟通道或动态变量的字段设备不支持命令中包含的单位代码。
    RESPONSE_COMMUNICATION_CODE_28 = 0x1C,
    // Undefined（自定义）	此响应代码的确切含义因命令而异。有关确切含义，请参见命令规范。制造商在设备特定命令使用时，可以定义此代码的另一个含义，只要只适用于给定的命令。使用此代码表示未执行该命令。没有从现场设备返回响应数据字节。目前没有具体定义
    RESPONSE_COMMUNICATION_CODE_29 = 0x1D,
    // Command Response Truncated	设备无法按要求重新设置为多个设备变量。这通常是由于命令缓冲区长度有限造成的。
    RESPONSE_COMMUNICATION_CODE_30 = 0x1E,
    // Undefined（自定义）	此响应代码的确切含义因命令而异。有关实际含义，请参阅命令规范。当制造商的设备特定命令使用此代码时，只要只有一种含义适用于给定的命令，制造商就可以确定此代码的另一种含义。使用这些代码表明该命令已执行，但需要偏离主机应用程序请求才能成功完成该命令。实际使用的值在现场设备的响应数据字节定义中重新使用
    RESPONSE_COMMUNICATION_CODE_31 = 0x1F,
    // Busy	此代码可能由以下两种情况之一引起： ()设备正于执行不能被此命令中断的功能：或2）所请求的命令需要延迟响应机制。不幸的是，所有延迟响应缓冲区都被使用了。在这两种情况下，主机应用程序都应该多次重试其请求（例如超过30次），直到现场设备可以执行命令。
    RESPONSE_COMMUNICATION_CODE_32 = 0x20,
    // Delayed Response Initiated 无法在数据链路层指定的时间内处理该命令。启动了延迟响应。主机应用程序应该在延迟一段时间后重试完全相同的请求（例如，延迟几秒钟后）。当通过多路复用器进行通信时，这种延迟可能只有半秒
    RESPONSE_COMMUNICATION_CODE_33 = 0x21,
    // Delayed Response Running	延迟响应的执行尚未完成。进程仍在现场设备中运行。
    RESPONSE_COMMUNICATION_CODE_34 = 0x22,
    // Delayed Response Dead	此响应仅对智能桥接设备有效。此代码表示现场设备没有响应请求。
    RESPONSE_COMMUNICATION_CODE_35 = 0x23,
    // Delayed Response Conflict	请求的命令将导致与现场设备中当前执行的延迟响应发生冲突。
    RESPONSE_COMMUNICATION_CODE_36 = 0x24,

    // 37-59		保留将来定义。任何制造商都不得使用这些代码
    // Tag Mismatch Error 请求中的标记与设备和传输层不匹配已设置“已确认”位
    RESPONSE_COMMUNICATION_CODE_38 = 0x26,

    // Payload Too Long	命令有效负载不适合 Wireless HART PDU
    RESPONSE_COMMUNICATION_CODE_60 = 0x3C,
    // No Buffers Available	该设备没有可用于接受Wireless HART DLPDU 的缓冲区
    RESPONSE_COMMUNICATION_CODE_61 = 0x3D,
    // No Alarm/Event Buffers Available	设备没有可用于接受Wireless HART DLPDU的报警/事件缓冲区
    RESPONSE_COMMUNICATION_CODE_62 = 0x3E,
    // Priority Too Low	DLPDU的优先级太低，设备无法接受Wireless HART DLPDU
    RESPONSE_COMMUNICATION_CODE_63 = 0x3F,
    // Command Not Implemented	请求的命令没有实现。此响应对通用命令无效。对于任何其他命令，该代码可能由现场设备返回，即使命令规范本身没有定义响应代码#64。
    RESPONSE_COMMUNICATION_CODE_64 = 0x40,
    /**
     *  1.Declined.Operator overridden.                         已拒绝。操作员已撤销。
        2.Force Join Declined                                   强制加入已拒绝
        3.Invalid Network ID                                    无效的网络ID
        4.Invalid timer type                                    计时器类型无效
        5.Invalid Time-to-Live                                  无效的生存时间
        6.Invalid Join Priority                                 无效的加入优先级
        7.Unknown Nickname                                      未知昵称
        8.Invalid Nickname                                      昵称无效
        9.Service Request denied                                服务请求被拒绝
        10.Link not found                                       未找到链接
        11.No more entries available                            没有更多可用的条目
        12.Entry not found                                      未找到条目
        13.Illegal frequency channel bits                       非法频道位
        14.Unknown Unique ID Key change failed                  未知的唯一IDKey更改失败
        15.Session with given peer device does not exist        与给定对等设备的会话不存在
        16.Invalid suspend time	                                无效地挂起时间
    */
    RESPONSE_COMMUNICATION_CODE_65 = 0x41,
    /**
     *  1.Invalid number of slots               插槽数量无效
        2.Session type invalid                  会话类型无效
        3.Invalid execution time                执行时间无效
        4.Unknown Notification Flag             未知通知标志
        5.Device List Conflict                  设备列表冲突
        6.Invalid neighbor property             邻居属性无效
        7.Invalid Service Id                    服务Id无效
        8.Invalid Graph Id                      图形Id无效
        9.Invalid resume time                   恢复时间无效
        10.Link already exists                  链接已存在
        11.Invalid Reason Code                  原因代码无效
        12.Unknown service flag                 未知服务标志
        13.Invalid timer interval	            计时器间隔无效
    */
    RESPONSE_COMMUNICATION_CODE_66 = 0x42,
    /**
     *  1.Invalid Graph Id                              无效的图形Id
        2.Unknown Superframe ID                         未知超帧ID
        3.Invalid Superframe mode                       无效的超帧模式
        4.Reason Code rejected,Service not deleted      原因代码被拒绝，服务未删除
        5.Unknown application domain	                未知的应用程序域
    */
    RESPONSE_COMMUNICATION_CODE_67 = 0x43,
    /**
     *  1.Unknown nickname                               未知昵称
        2.Invalid execution time                         无效的执行时间
        3.Invalid slot number	                         插槽编号无效
    */
    RESPONSE_COMMUNICATION_CODE_68 = 0x44,
    // Unknown link options	未知链接选项
    RESPONSE_COMMUNICATION_CODE_69 = 0x45,
    // Invalid channel offset	无效通道偏移
    RESPONSE_COMMUNICATION_CODE_70 = 0x46,
    // Invalid link type	无效的链接类型
    RESPONSE_COMMUNICATION_CODE_71 = 0x47,

    // 72-95         此响应代码的确切含义因命令而异。有关实际含义，请参阅命令规范。当制造商的设备特定命令使用此代码时，制造商可以为其定义另一种含义，只要只有一种含义适用于给定的命令。使用这些代码表示该命令未执行。没有从现场设备返回响应数据字节目前没有特定的定义

    // 96-111        保留将来定义。任何制造商都不得使用这些代码

    // 112-127       此响应代码的确切含义因命令而异。有关实际含义，请参阅命令规范。当制造商的设备特定命令使用此代码时，只要只有一种含义适用于给定的命令，制造商就可以定义此代码的另一种含义。使用这些代码表示命令已执行，但需要偏离主机应用程序的要求才能成功完成命令。实际使用的值在现场设备中返回响应数据字节
    RESPONSE_COMMUNICATION_CODE_127 = 0x7F, // 不回复消息，缓存上一条消息
} response_communication_code_e;            // 通信正常的信息

typedef enum
{
    // 缓冲区溢出－消息对于设备的接收缓冲区来说太长
    RESPONSE_ERROR_COMMUNICATION_CODE_1 = BIT1,
    // 通讯故障－与现场设备或子设备的通信不成功。设备可能已断开连接。该位应该由主数据链路和I/O系统设置，以指示与现场设备的通信失败
    RESPONSE_ERROR_COMMUNICATION_CODE_2 = BIT2,
    // 奇偶校验误差－设备计算的奇偶校验与消息末尾的校验字节不匹配
    RESPONSE_ERROR_COMMUNICATION_CODE_3 = BIT3,
    // 帧错误-UART没有检测到设备接收到的一个或多个字节的停止位(当应该出现停止位时，没有检测到标记或1)
    RESPONSE_ERROR_COMMUNICATION_CODE_4 = BIT4,
    // 溢出错误-UART的接收缓冲区中至少有一个字节的数据在读取之前被覆盖(从服务器处理传入字节的速度不够快)
    RESPONSE_ERROR_COMMUNICATION_CODE_5 = BIT5,
    // 垂直奇偶校验错误-设备接收到的一个或多个字节的奇偶性不是奇数。
    RESPONSE_ERROR_COMMUNICATION_CODE_6 = BIT6,
} response_error_communication_code_e; // 通信错误的信息

typedef enum
{
    // 主变量超越极限PV已经超出了它的运行极限
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_1 = BIT0,
    // 非主变量超越极限-A未映射到PV的设备变量超出其操作限制
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_2 = BIT1,
    // 环路电流饱和－回路电流已达到其上（或下） 端点限制，不能再增加（或减少）
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_3 = BIT2,
    // 环路电流固定1－环电流保持在一个固定的值，并没有响应进程的变化
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_4 = BIT3,
    // 更多状态可用－更多的状态信息可通过Command 48，读取额外的状态信息
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_5 = BIT4,
    // 冷启动－发生电源故障或设备重置
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_6 = BIT5,
    // 配置已更改－执行的操作更改了设备的配置
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_7 = BIT6,
    // 设备故障－设备检测到严重错误或故障，危及设备运行
    RESPONSE_DEVICE_OPERATION_STATUS_CODE_8 = BIT7,
} response_device_operation_status_code_e; // 设备的操作状态有关的信息

// 5.1 扩展设备类型
typedef enum
{
    // lapool 莱普尔
    EXTENDED_DEVICE_TYPE_LAPOOL = 0x0000,
} extended_device_type_e;

// 5.2 单位代码
typedef enum
{
    // 温度单位代码
    UNITS_CODE_TEMPERATURE_CELSIUS = 32,    // 摄氏度
    UNITS_CODE_TEMPERATURE_FAHRENHEIT = 33, // 华氏度
    UNITS_CODE_TEMPERATURE_RANKINE = 34,    // 兰氏度
    UNITS_CODE_TEMPERATURE_KELVIN = 35,     // 开氏度

    // 压力单位代码
    UNITS_CODE_PRESSURE_INH20 = 1,       // 英寸水柱
    UNITS_CODE_PRESSURE_INHG = 2,        // 英寸汞柱
    UNITS_CODE_PRESSURE_FTH20 = 3,       // 英尺水柱
    UNITS_CODE_PRESSURE_MMH20 = 4,       // 毫米水柱
    UNITS_CODE_PRESSURE_MMHG = 5,        // 毫米汞柱
    UNITS_CODE_PRESSURE_PSI = 6,         // 磅力/平方英寸
    UNITS_CODE_PRESSURE_BAR = 7,         // 巴
    UNITS_CODE_PRESSURE_MBAR = 8,        // 毫巴
    UNITS_CODE_PRESSURE_GCM2 = 9,        // 克/平方厘米
    UNITS_CODE_PRESSURE_KGCM2 = 10,      // 千克/平方厘米
    UNITS_CODE_PRESSURE_PA = 11,         // 帕斯卡
    UNITS_CODE_PRESSURE_KPA = 12,        // 千帕
    UNITS_CODE_PRESSURE_TORR = 13,       // 托
    UNITS_CODE_PRESSURE_ATM = 14,        // 标准大气压
    UNITS_CODE_PRESSURE_INH20_60F = 145, // 英寸水柱(60°F)
    UNITS_CODE_PRESSURE_CMH20_4C = 170,  // 厘米水柱(4°C)
    UNITS_CODE_PRESSURE_MH20_4C = 171,   // 米水柱(4°C)
    UNITS_CODE_PRESSURE_CMHG = 172,      // 厘米汞柱
    UNITS_CODE_PRESSURE_LBFT2 = 173,     // 磅/平方英尺
    UNITS_CODE_PRESSURE_HPA = 174,       // 百帕
    UNITS_CODE_PRESSURE_PSIA = 175,      // 磅力/平方英寸绝对
    UNITS_CODE_PRESSURE_KGM2 = 176,      // 千克/平方米
    UNITS_CODE_PRESSURE_FTH20_4C = 177,  // 英尺水柱(4°C)
    UNITS_CODE_PRESSURE_FTH20_60F = 178, // 英尺水柱(60°F)
    UNITS_CODE_PRESSURE_MHG = 179,       // 米汞柱
    UNITS_CODE_PRESSURE_MPSI = 180,      // 兆磅力/平方英寸
    UNITS_CODE_PRESSURE_OZIN2 = 181,     // 盎司/平方英寸
    UNITS_CODE_PRESSURE_MPA = 237,       // 兆帕
    UNITS_CODE_PRESSURE_INH20_4C = 238,  // 英寸水柱(4°C)
    UNITS_CODE_PRESSURE_MMH20_4C = 239,  // 毫米水柱(4°C)

    // 体积流量单位代码
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_FT3MIN = 15,      // 英尺立方/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALMIN = 16,      // 加仑/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_IMIN = 17,        // 英制加仑/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALUKMIN = 18,    // 英国加仑/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_M3H = 19,         // 立方米/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALS = 22,        // 加仑/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_MGALD = 23,       // 百万加仑/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_IS = 24,          // 英制加仑/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_MID = 25,         // 百万英里/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_FT3S = 26,        // 英尺立方/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_FT3D = 27,        // 英尺立方/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_M3S = 28,         // 立方米/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_M3D = 29,         // 立方米/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALUKH = 30,      // 英国加仑/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALUKD = 31,      // 英国加仑/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NM3H = 121,       // 标准立方米/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NIH = 122,        // 标准升/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SCFMIN = 123,     // 标准立方英尺/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_FT3H = 130,       // 英尺立方/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_M3MIN = 131,      // 立方米/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLS = 132,       // 桶/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLMIN = 133,     // 桶/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLH = 134,       // 桶/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLD = 135,       // 桶/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALH = 136,       // 加仑/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALUKS = 137,     // 英国加仑/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_IH = 138,         // 英制加仑/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLBEERS = 170,   // 啤酒桶/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLBEERMIN = 171, // 啤酒桶/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLBEERH = 172,   // 啤酒桶/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_BBLBEERD = 173,   // 啤酒桶/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NID = 174,        // 标准升/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NIMIN = 175,      // 标准升/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NIS = 176,        // 标准升/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SID = 177,        // 立方米/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SIH = 178,        // 立方米/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SIMIN = 179,      // 立方米/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SIS = 180,        // 立方米/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NM3D = 181,       // 标准立方米/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NM3MIN = 182,     // 标准立方米/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_NM3S = 183,       // 标准立方米/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SCFD = 184,       // 标准立方英尺/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SCFH = 185,       // 标准立方英尺/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SCFS = 186,       // 标准立方英尺/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SM3D = 187,       // 立方米/天
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SM3H = 188,       // 立方米/小时
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SM3MIN = 189,     // 立方米/分钟
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_SM3S = 190,       // 立方米/秒
    UNITS_CODE_VOLUMETRIC_FLOW_RATE_GALD = 235,       // 加仑/天

    // 速度单位代码
    UNITS_CODE_SPEED_FTS = 20,    // 英尺/秒
    UNITS_CODE_SPEED_MS = 21,     // 米/秒
    UNITS_CODE_SPEED_INS = 114,   // 英寸/秒
    UNITS_CODE_SPEED_INMIN = 115, // 英寸/分钟
    UNITS_CODE_SPEED_FTMIN = 116, // 英尺/分钟
    UNITS_CODE_SPEED_MH = 120,    // 米/小时
    UNITS_CODE_SPEED_MMS = 170,   // 毫米/秒

    // 卷单位代码
    UNITS_CODE_VOLUME_GAL = 40,      // 加仑
    UNITS_CODE_VOLUME_L = 41,        // 升
    UNITS_CODE_VOLUME_GALUK = 42,    // 英国加仑
    UNITS_CODE_VOLUME_M3 = 43,       // 立方米
    UNITS_CODE_VOLUME_BBL = 46,      // 桶
    UNITS_CODE_VOLUME_BU = 110,      // 蒲式耳
    UNITS_CODE_VOLUME_YD3 = 111,     // 立方码
    UNITS_CODE_VOLUME_FT3 = 112,     // 英尺立方
    UNITS_CODE_VOLUME_IN3 = 113,     // 立方英寸
    UNITS_CODE_VOLUME_BBLUS = 124,   // 美国桶
    UNITS_CODE_VOLUME_NM3 = 166,     // 标准立方米
    UNITS_CODE_VOLUME_NL = 167,      // 标准升
    UNITS_CODE_VOLUME_SCF = 168,     // 标准立方英尺
    UNITS_CODE_VOLUME_BBLBEER = 170, // 啤酒桶
    UNITS_CODE_VOLUME_SL = 171,      // 立方米/秒
    UNITS_CODE_VOLUME_SM3 = 172,     // 立方米
    UNITS_CODE_VOLUME_MGAL = 173,    // 百万加仑
    UNITS_CODE_VOLUME_HL = 236,      // 公石

    // 长度单位代码
    UNITS_CODE_LENGTH_FT = 44,    // 英尺
    UNITS_CODE_LENGTH_M = 45,     // 米
    UNITS_CODE_LENGTH_IN = 47,    // 英寸
    UNITS_CODE_LENGTH_CM = 48,    // 厘米
    UNITS_CODE_LENGTH_MM = 49,    // 毫米
    UNITS_CODE_LENGTH_FT16 = 151, // 英尺-16
    UNITS_CODE_LENGTH_UM = 170,   // 微米
    UNITS_CODE_LENGTH_UIN = 171,  // 微英寸
    UNITS_CODE_LENGTH_NM = 172,   // 纳米

    // 时间单位代码
    UNITS_CODE_TIME_MIN = 50, // 分钟
    UNITS_CODE_TIME_S = 51,   // 秒
    UNITS_CODE_TIME_H = 52,   // 小时
    UNITS_CODE_TIME_D = 53,   // 天
    UNITS_CODE_TIME_MS = 170, // 毫秒
    UNITS_CODE_TIME_US = 171, // 微秒
    UNITS_CODE_TIME_NS = 172, // 纳秒

    // 质量单位代码
    UNITS_CODE_QUALITY_G = 60,     // 克
    UNITS_CODE_QUALITY_KG = 61,    // 千克
    UNITS_CODE_QUALITY_T = 62,     // 吨
    UNITS_CODE_QUALITY_LB = 63,    // 磅
    UNITS_CODE_QUALITY_TON = 64,   // 短吨
    UNITS_CODE_QUALITY_TONUK = 65, // 长吨
    UNITS_CODE_QUALITY_OZ = 125,   // 盎司

    // 质量流量单位代码
    UNITS_CODE_MASS_FLOW_GS = 70,     // 克/秒
    UNITS_CODE_MASS_FLOW_GMIN = 71,   // 克/分钟
    UNITS_CODE_MASS_FLOW_GH = 72,     // 克/小时
    UNITS_CODE_MASS_FLOW_KGS = 73,    // 千克/秒
    UNITS_CODE_MASS_FLOW_KGMIN = 74,  // 千克/分钟
    UNITS_CODE_MASS_FLOW_KGH = 75,    // 千克/小时
    UNITS_CODE_MASS_FLOW_KGD = 76,    // 千克/天
    UNITS_CODE_MASS_FLOW_TMIN = 77,   // 吨/分钟
    UNITS_CODE_MASS_FLOW_TH = 78,     // 吨/小时
    UNITS_CODE_MASS_FLOW_TD = 79,     // 吨/天
    UNITS_CODE_MASS_FLOW_LBS = 80,    // 磅/秒
    UNITS_CODE_MASS_FLOW_LBMIN = 81,  // 磅/分钟
    UNITS_CODE_MASS_FLOW_LBH = 82,    // 磅/小时
    UNITS_CODE_MASS_FLOW_LBD = 83,    // 磅/天
    UNITS_CODE_MASS_FLOW_TONMIN = 84, // 短吨/分钟
    UNITS_CODE_MASS_FLOW_TONH = 85,   // 短吨/小时
    UNITS_CODE_MASS_FLOW_TOND = 86,   // 短吨/天
    UNITS_CODE_MASS_FLOW_TONUKH = 87, // 长吨/小时
    UNITS_CODE_MASS_FLOW_TONUKD = 88, // 长吨/天

    // 单位体积质量单位代码
    UNITS_CODE_MASS_PER_UNIT_VOLUME_SG = 90,       // 比重
    UNITS_CODE_MASS_PER_UNIT_VOLUME_GM3 = 91,      // 克/立方米
    UNITS_CODE_MASS_PER_UNIT_VOLUME_KGM3 = 92,     // 千克/立方米
    UNITS_CODE_MASS_PER_UNIT_VOLUME_LBGAL = 93,    // 磅/加仑
    UNITS_CODE_MASS_PER_UNIT_VOLUME_LBFT3 = 94,    // 磅/立方英尺
    UNITS_CODE_MASS_PER_UNIT_VOLUME_GML = 95,      // 克/毫升
    UNITS_CODE_MASS_PER_UNIT_VOLUME_KGL = 96,      // 千克/升
    UNITS_CODE_MASS_PER_UNIT_VOLUME_GL = 97,       // 克/升
    UNITS_CODE_MASS_PER_UNIT_VOLUME_LBIN3 = 98,    // 磅/立方英寸
    UNITS_CODE_MASS_PER_UNIT_VOLUME_TONYD3 = 99,   // 吨/立方码
    UNITS_CODE_MASS_PER_UNIT_VOLUME_OTW = 100,     // 盐度
    UNITS_CODE_MASS_PER_UNIT_VOLUME_BO = 102,      // 油比重
    UNITS_CODE_MASS_PER_UNIT_VOLUME_BLIGHT = 103,  // B°(轻质油)
    UNITS_CODE_MASS_PER_UNIT_VOLUME_DEGAPI = 104,  // API度
    UNITS_CODE_MASS_PER_UNIT_VOLUME_UGL = 146,     // 微克/升
    UNITS_CODE_MASS_PER_UNIT_VOLUME_UGM3 = 147,    // 微克/立方米
    UNITS_CODE_MASS_PER_UNIT_VOLUME_PERCENT = 148, // 百分比
    UNITS_CODE_MASS_PER_UNIT_VOLUME_MGL = 170,     // 毫克/升
    UNITS_CODE_MASS_PER_UNIT_VOLUME_MGM3 = 171,    // 毫克/立方米
    UNITS_CODE_MASS_PER_UNIT_VOLUME_TM3 = 172,     // 吨/立方米

    // 粘度单位代码
    UNITS_CODE_VISCOSITY_CST = 54,  // 厘斯
    UNITS_CODE_VISCOSITY_CP = 55,   // 毫帕秒
    UNITS_CODE_VISCOSITY_PAS = 170, // 帕斯卡秒

    // 角速度单位代码
    UNITS_CODE_ANGULAR_VELOCITY_OSPS = 117, // 角度/秒
    UNITS_CODE_ANGULAR_VELOCITY_RPS = 118,  // 每秒转数
    UNITS_CODE_ANGULAR_VELOCITY_RPM = 119,  // 每分钟转数

    // 能源(功)单位代码
    UNITS_CODE_ENERGY_J = 69,       // 焦耳
    UNITS_CODE_ENERGY_DTH = 89,     // 热力单位
    UNITS_CODE_ENERGY_FTLBF = 126,  // 英尺-磅
    UNITS_CODE_ENERGY_KWH = 128,    // 千瓦时
    UNITS_CODE_ENERGY_MCALTH = 162, // 兆卡(热)
    UNITS_CODE_ENERGY_MJ = 164,     // 兆焦
    UNITS_CODE_ENERGY_BTU = 165,    // 英热单位
    UNITS_CODE_ENERGY_KVAH = 170,   // 千伏安时
    UNITS_CODE_ENERGY_KVARH = 171,  // 千乏时
    UNITS_CODE_ENERGY_MBTU = 172,   // 百万英热单位

    // 力单位代码
    UNITS_CODE_POWER_N = 68,   // 牛
    UNITS_CODE_POWER_KN = 170, // 千牛

    // 动力单位代码
    UNITS_CODE_DYNAMIC_KW = 127,      // 千瓦
    UNITS_CODE_DYNAMIC_HP = 129,      // 马力
    UNITS_CODE_DYNAMIC_MCALTHH = 140, // 兆卡(热)/小时
    UNITS_CODE_DYNAMIC_MJH = 141,     // 兆焦/小时
    UNITS_CODE_DYNAMIC_BTUH = 142,    // 英热单位/小时
    UNITS_CODE_DYNAMIC_MJS = 170,     // 兆焦/秒
    UNITS_CODE_DYNAMIC_MW = 170,      // 兆瓦
    UNITS_CODE_DYNAMIC_MJD = 171,     // 兆焦/天
    UNITS_CODE_DYNAMIC_MMBTUS = 172,  // 百万英热单位/秒
    UNITS_CODE_DYNAMIC_MMBTUH = 173,  // 百万英热单位/小时
    UNITS_CODE_DYNAMIC_MMBTUD = 174,  // 百万英热单位/天
    UNITS_CODE_DYNAMIC_VA = 175,      // 伏安
    UNITS_CODE_DYNAMIC_KVA = 176,     // 千伏安
    UNITS_CODE_DYNAMIC_KVAR = 177,    // 千乏
    UNITS_CODE_DYNAMIC_BTUD = 178,    // 英热单位/天
    UNITS_CODE_DYNAMIC_BTUMIN = 179,  // 英热单位/分钟
    UNITS_CODE_DYNAMIC_MJMIN = 180,   // 兆焦/分钟
    UNITS_CODE_DYNAMIC_BTUS = 181,    // 英热单位/秒
    UNITS_CODE_DYNAMIC_MBTUS = 182,   // 百万英热单位/秒
    UNITS_CODE_DYNAMIC_MBTUM = 183,   // 百万英热单位/分钟
    UNITS_CODE_DYNAMIC_MBTUH = 184,   // 百万英热单位/小时
    UNITS_CODE_DYNAMIC_MBTUD = 185,   // 百万英热单位/天

    // 频率单位代码
    UNITS_CODE_FREQUENCY_HZ = 38, // 赫兹

    // 分析单位代码
    UNITS_CODE_ANALYSIS_PERCENT = 57,                          // 百分比
    UNITS_CODE_ANALYSIS_PH = 59,                               // 酸碱度
    UNITS_CODE_ANALYSIS_STEAM_QUALITY = 150,                   // 蒸汽质量
    UNITS_CODE_ANALYSIS_PLATO = 160,                           // 普拉托度
    UNITS_CODE_ANALYSIS_PERCENT_LOWER_EXPLOSION_LEVEL = 161,   // 下限爆炸浓度百分比
    UNITS_CODE_ANALYSIS_MM_PER_YEAR = 170,                     // 毫米/年
    UNITS_CODE_ANALYSIS_MILS_PER_YEAR = 171,                   // 千分英寸/年
    UNITS_CODE_ANALYSIS_PPM_M = 172,                           // 百万分之一/米
    UNITS_CODE_ANALYSIS_PERCENT_LOWER_EXPLOSION_LEVEL_M = 173, // 下限爆炸浓度百分比/米

    // 电容单位代码
    UNITS_CODE_CAPACITANCE_PF = 153, // 153皮法

    // 电势的电磁单位
    UNITS_CODE_ELECTROMOTANCE_MILLIVOLTS = 36, // 毫伏
    UNITS_CODE_ELECTROMOTANCE_VOLTS = 58,      // 伏

    // 电流单位代码
    UNITS_CODE_CURRENT_MA = 39,  // 毫安
    UNITS_CODE_CURRENT_NA = 170, // 纳安
    UNITS_CODE_CURRENT_UA = 171, // 微安
    UNITS_CODE_CURRENT_A = 172,  // 安

    // 电阻单位代码
    UNITS_CODE_RESISTANCE_OHMS = 37,       // 欧姆
    UNITS_CODE_RESISTANCE_KILOOHMS = 163,  // 千欧
    UNITS_CODE_RESISTANCE_MEGAOHMS = 170,  // 兆欧
    UNITS_CODE_RESISTANCE_QCM = 171,       // 欧姆厘米
    UNITS_CODE_RESISTANCE_KQ_CM = 172,     // 千欧厘米
    UNITS_CODE_RESISTANCE_MQ_CM = 173,     // 兆欧厘米
    UNITS_CODE_RESISTANCE_MILLIOHMS = 174, // 毫欧

    // 角度单位代码
    UNITS_CODE_ANGLE_DEGREES = 143, // 度
    UNITS_CODE_ANGLE_RADIANS = 144, // 弧度

    // 电导单位代码
    UNITS_CODE_CONDUCTION_MICROSIEMENS = 56,        // 微西门子
    UNITS_CODE_CONDUCTION_MILLISIEMENS_PER_CM = 66, // 毫西门子每厘米
    UNITS_CODE_CONDUCTION_MICROSIEMENS_PER_CM = 67, // 微西门子每厘米

    // 卷单位代码
    UNITS_CODE_VOLUME_PERCENT = 149,               // 体积百分比
    UNITS_CODE_VOLUME_MILLILITERS_PER_LITER = 154, // 毫升每升
    UNITS_CODE_VOLUME_MICROLITERS_PER_LITER = 155, // 微升每升

    // 单位质量代码
    UNITS_CODE_QUALITY_DEGREES_BALLING = 107,      // 波林度
    UNITS_CODE_QUALITY_CUBIC_FEET_PER_POUND = 152, // 立方英尺每磅

    // 浓度单位代码
    UNITS_CODE_CONCENTRATION_PERCENT = 57,                    // 百分比
    UNITS_CODE_CONCENTRATION_DEGREES_BRIX = 101,              // 布氏度
    UNITS_CODE_CONCENTRATION_PERCENT_SOLIDS_PER_WEIGHT = 105, // 固体质量百分比
    UNITS_CODE_CONCENTRATION_PERCENT_SOLIDS_PER_VOLUME = 106, // 固体体积百分比
    UNITS_CODE_CONCENTRATION_PROOF_PER_VOLUME = 108,          // 酒精度（体积百分比）
    UNITS_CODE_CONCENTRATION_PROOF_PER_MASS = 109,            // 酒精度（质量百分比）
    UNITS_CODE_CONCENTRATION_PARTS_PER_MILLION = 139,         // 百万分之一
    UNITS_CODE_CONCENTRATION_PARTS_PER_BILLION = 169,         // 十亿分之一
    UNITS_CODE_CONCENTRATION_PARTS_PER_THOUSAND = 170,        // 千分之一

    // 加速度单位代码
    UNITS_CODE_ACCELERATION_GRAVITATIONAL_ACCELERATION = 170, // 重力加速度
    UNITS_CODE_ACCELERATION_FEET_PER_SECOND_SQUARED = 171,    // 英尺每秒平方
    UNITS_CODE_ACCELERATION_METER_PER_SECOND_SQUARED = 172,   // 米每秒平方

    // 浊度单位代码
    UNITS_CODE_TURBIDITY_FORMAZIN_NEPHELOMETRIC_UNITS = 170, // 甲醛胶凝法浊度单位
    UNITS_CODE_TURBIDITY_FORMAZIN_TURBIDITY_UNIT = 171,      // 甲醛浊度单位
    UNITS_CODE_TURBIDITY_NEPHELOMETRIC_TURBIDITY_UNIT = 172, // 比浊度单位

    // 每秒体积气体流量
    UNITS_CODE_STANDARD_CUBIC_FEET_PER_SECOND = 186,  // 标准立方英尺每秒
    UNITS_CODE_NORMAL_LITER_PER_SECOND = 176,         // 标准升每秒
    UNITS_CODE_STANDARD_LITER_PER_SECOND = 180,       // 标准立方米每秒
    UNITS_CODE_NORMAL_CUBIC_METER_PER_SECOND = 183,   // 标准立方米每秒
    UNITS_CODE_STANDARD_CUBIC_METER_PER_SECOND = 190, // 标准立方米每秒

    // 每分钟体积气体流量
    UNITS_CODE_STANDARD_CUBIC_FEET_PER_MINUTE = 123,  // 标准立方英尺每分钟
    UNITS_CODE_NORMAL_LITER_PER_MINUTE = 175,         // 标准升每分钟
    UNITS_CODE_STANDARD_LITER_PER_MINUTE = 179,       // 标准立方米每分钟
    UNITS_CODE_NORMAL_CUBIC_METER_PER_MINUTE = 182,   // 标准立方米每分钟
    UNITS_CODE_STANDARD_CUBIC_METER_PER_MINUTE = 189, // 标准立方米每分钟

    // 每小时体积气体流量
    UNITS_CODE_STANDARD_CUBIC_FEET_PER_HOUR = 185,  // 标准立方英尺每小时
    UNITS_CODE_NORMAL_LITER_PER_HOUR = 122,         // 标准升每小时
    UNITS_CODE_STANDARD_LITER_PER_HOUR = 178,       // 标准立方米每小时
    UNITS_CODE_NORMAL_CUBIC_METER_PER_HOUR = 121,   // 标准立方米每小时
    UNITS_CODE_STANDARD_CUBIC_METER_PER_HOUR = 188, // 标准立方米每小时

    // 每天体积气体流量
    UNITS_CODE_STANDARD_CUBIC_FEET_PER_DAY = 184,  // 标准立方英尺每天
    UNITS_CODE_NORMAL_LITER_PER_DAY = 174,         // 标准升每天
    UNITS_CODE_STANDARD_LITER_PER_DAY = 177,       // 标准立方米每天
    UNITS_CODE_NORMAL_CUBIC_METER_PER_DAY = 181,   // 标准立方米每天
    UNITS_CODE_STANDARD_CUBIC_METER_PER_DAY = 187, // 标准立方米每天

    // 每秒体积液体流量
    UNITS_CODE_IMPERIAL_FLUID_OUNCES_PER_SECOND = 174,    // 英制液体盎司每秒
    UNITS_CODE_US_FLUID_OUNCES_PER_SECOND = 175,          // 美制液体盎司每秒
    UNITS_CODE_MILLILITER_PER_SECOND = 176,               // 毫升每秒
    UNITS_CODE_LITERS_PER_SECOND = 24,                    // 升每秒
    UNITS_CODE_HECTOLITER_PER_SECOND = 178,               // 公石每秒
    UNITS_CODE_CUBIC_METER_PER_SECOND = 28,               // 立方米每秒
    UNITS_CODE_MILLION_LITERS_PER_SECOND = 180,           // 百万升每秒
    UNITS_CODE_US_GALLONS_PER_SECOND = 22,                // 美制加仑每秒
    UNITS_CODE_US_KILOGALLON_PER_SECOND = 182,            // 美制千加仑每秒
    UNITS_CODE_US_MILLION_GALLONS_PER_SECOND = 183,       // 美制百万加仑每秒
    UNITS_CODE_IMPERIAL_GALLONS_PER_SECOND = 137,         // 英制加仑每秒
    UNITS_CODE_IMPERIAL_MILLION_GALLONS_PER_SECOND = 185, // 英制百万加仑每秒
    UNITS_CODE_CUBIC_FEET_PER_SECOND = 26,                // 立方英尺每秒
    UNITS_CODE_ACRE_FEET_PER_SECOND = 187,                // 英亩英尺每秒
    UNITS_CODE_US_DRUM_PER_SECOND = 188,                  // 美制桶每秒
    UNITS_CODE_US_LIQUID_BARREL_PER_SECOND = 189,         // 美制液体桶每秒
    UNITS_CODE_US_BEER_BARREL_PER_SECOND = 170,           // 美制啤酒桶每秒
    UNITS_CODE_OIL_BARRELS_PER_SECOND = 132,              // 油桶每秒
    UNITS_CODE_UK_BEER_BARREL_PER_SECOND = 192,           // 英制啤酒桶每秒

    // 每分钟体积液体流量
    UNITS_CODE_IMPERIAL_FLUID_OUNCES_PER_MINUTE = 174,    // 英制液体盎司每分钟
    UNITS_CODE_US_FLUID_OUNCES_PER_MINUTE = 175,          // 美制液体盎司每分钟
    UNITS_CODE_MILLILITER_PER_MINUTE = 176,               // 毫升每分钟
    UNITS_CODE_LITERS_PER_MINUTE = 17,                    // 升每分钟
    UNITS_CODE_HECTOLITER_PER_MINUTE = 178,               // 公石每分钟
    UNITS_CODE_CUBIC_METER_PER_MINUTE = 131,              // 立方米每分钟
    UNITS_CODE_MILLION_LITERS_PER_MINUTE = 180,           // 百万升每分钟
    UNITS_CODE_US_GALLONS_PER_MINUTE = 16,                // 美制加仑每分钟
    UNITS_CODE_US_KILOGALLON_PER_MINUTE = 182,            // 美制千加仑每分钟
    UNITS_CODE_US_MILLION_GALLONS_PER_MINUTE = 183,       // 美制百万加仑每分钟
    UNITS_CODE_IMPERIAL_GALLONS_PER_MINUTE = 18,          // 英制加仑每分钟
    UNITS_CODE_IMPERIAL_MILLION_GALLONS_PER_MINUTE = 185, // 英制百万加仑每分钟
    UNITS_CODE_CUBIC_FEET_PER_MINUTE = 15,                // 立方英尺每分钟
    UNITS_CODE_ACRE_FEET_PER_MINUTE = 187,                // 英亩英尺每分钟
    UNITS_CODE_US_DRUM_PER_MINUTE = 188,                  // 美制桶每分钟
    UNITS_CODE_US_LIQUID_BARREL_PER_MINUTE = 189,         // 美制液体桶每分钟
    UNITS_CODE_US_BEER_BARREL_PER_MINUTE = 171,           // 美制啤酒桶每分钟
    UNITS_CODE_OIL_BARRELS_PER_MINUTE = 133,              // 油桶每分钟
    UNITS_CODE_UK_BEER_BARREL_PER_MINUTE = 192,           // 英制啤酒桶每分钟

    // 每小时体积液体流量
    UNITS_CODE_IMPERIAL_FLUID_OUNCES_PER_HOUR = 174,    // 英制液体盎司每小时
    UNITS_CODE_US_FLUID_OUNCES_PER_HOUR = 175,          // 美制液体盎司每小时
    UNITS_CODE_MILLILITER_PER_HOUR = 176,               // 毫升每小时
    UNITS_CODE_LITERS_PER_HOUR = 138,                   // 升每小时
    UNITS_CODE_HECTOLITER_PER_HOUR = 178,               // 公石每小时
    UNITS_CODE_CUBIC_METER_PER_HOUR = 19,               // 立方米每小时
    UNITS_CODE_MILLION_LITERS_PER_HOUR = 180,           // 百万升每小时
    UNITS_CODE_US_GALLONS_PER_HOUR = 136,               // 美制加仑每小时
    UNITS_CODE_US_KILOGALLON_PER_HOUR = 182,            // 美制千加仑每小时
    UNITS_CODE_US_MILLION_GALLONS_PER_HOUR = 183,       // 美制百万加仑每小时
    UNITS_CODE_IMPERIAL_GALLONS_PER_HOUR = 30,          // 英制加仑每小时
    UNITS_CODE_IMPERIAL_MILLION_GALLONS_PER_HOUR = 185, // 英制百万加仑每小时
    UNITS_CODE_CUBIC_FEET_PER_HOUR = 130,               // 立方英尺每小时
    UNITS_CODE_ACRE_FEET_PER_HOUR = 187,                // 英亩英尺每小时
    UNITS_CODE_US_DRUM_PER_HOUR = 188,                  // 美制桶每小时
    UNITS_CODE_US_LIQUID_BARREL_PER_HOUR = 189,         // 美制液体桶每小时
    UNITS_CODE_US_BEER_BARREL_PER_HOUR = 172,           // 美制啤酒桶每小时
    UNITS_CODE_OIL_BARRELS_PER_HOUR = 134,              // 油桶每小时
    UNITS_CODE_UK_BEER_BARREL_PER_HOUR = 192,           // 英制啤酒桶每小时

    // 每天体积液体流量
    UNITS_CODE_IMPERIAL_FLUID_OUNCES_PER_DAY = 174,    // 英制液体盎司每天
    UNITS_CODE_US_FLUID_OUNCES_PER_DAY = 175,          // 美制液体盎司每天
    UNITS_CODE_MILLILITER_PER_DAY = 176,               // 毫升每天
    UNITS_CODE_LITERS_PER_DAY = 177,                   // 升每天
    UNITS_CODE_HECTOLITER_PER_DAY = 178,               // 公石每天
    UNITS_CODE_CUBIC_METER_PER_DAY = 29,               // 立方米每天
    UNITS_CODE_MILLION_LITERS_PER_DAY = 25,            // 百万升每天
    UNITS_CODE_US_GALLONS_PER_DAY = 235,               // 美制加仑每天
    UNITS_CODE_US_KILOGALLON_PER_DAY = 182,            // 美制千加仑每天
    UNITS_CODE_US_MILLION_GALLONS_PER_DAY = 23,        // 美制百万加仑每天
    UNITS_CODE_IMPERIAL_GALLONS_PER_DAY = 31,          // 英制加仑每天
    UNITS_CODE_IMPERIAL_MILLION_GALLONS_PER_DAY = 185, // 英制百万加仑每天
    UNITS_CODE_CUBIC_FEET_PER_DAY = 27,                // 立方英尺每天
    UNITS_CODE_ACRE_FEET_PER_DAY = 187,                // 英亩英尺每天
    UNITS_CODE_US_DRUM_PER_DAY = 188,                  // 美制桶每天
    UNITS_CODE_US_LIQUID_BARREL_PER_DAY = 189,         // 美制液体桶每天
    UNITS_CODE_US_BEER_BARREL_PER_DAY = 173,           // 美制啤酒桶每天
    UNITS_CODE_OIL_BARRELS_PER_DAY = 135,              // 油桶每天
    UNITS_CODE_UK_BEER_BARREL_PER_DAY = 192,           // 英制啤酒桶每天

    // 热膨胀代码
    UNITS_CODE_CELSIUS = 170,    // 摄氏度
    UNITS_CODE_FAHRENHEIT = 171, // 华氏度

    // 体积能量密度代码
    UNITS_CODE_KILOJOULES_PER_LITER = 170,                 // 千焦每升
    UNITS_CODE_BRITISH_THERMAL_UNITS_PER_CUBIC_FOOT = 171, // 英热单位每立方英尺

    // 质量能量密度单位代码
    UNITS_CODE_MEGAJOULES_PER_KILOGRAM = 170,         // 兆焦每千克
    UNITS_CODE_BRITISH_THERMAL_UNITS_PER_POUND = 171, // 英热单位每磅

    // 扭矩单位代码
    UNITS_CODE_NEWTON_METER = 170,       // 牛·米
    UNITS_CODE_KILO_NEWTON_METER = 171,  // 千牛·米
    UNITS_CODE_POUND_FORCE_FEET = 172,   // 磅力·英尺
    UNITS_CODE_POUND_FORCE_INCH = 173,   // 磅力·英寸
    UNITS_CODE_MILLI_NEWTON_METER = 174, // 毫牛·米

    // 其他单位代码
    UNITS_CODE_OTHER_PERCENT = 57,        // 57% 百分比
    UNITS_CODE_OTHER_DECIBEL = 156,       // 156 分贝
    UNITS_CODE_OTHER_GRAMS_PER_MOL = 170, // 170 克每摩尔

    // 扭转刚度单位代码
    UNITS_CODE_KILO_NEWTON_METER_PER_DEGREE = 170, // 170 千牛顿·米每度
    UNITS_CODE_NEWTON_METER_PER_DEGREE = 171,      // 171 牛顿·米每度
    UNITS_CODE_POUND_FORCE_FEET_PER_DEGREE = 172,  // 172 磅力·英尺每度
    UNITS_CODE_POUND_FORCE_INCH_PER_DEGREE = 173,  // 173 磅力·英寸每度
    UNITS_CODE_KILO_NEWTON_METER_PER_RADIAN = 174, // 174 千牛顿·米每弧度
    UNITS_CODE_NEWTON_METER_PER_RADIAN = 175,      // 175 牛顿·米每弧度
    UNITS_CODE_POUND_FORCE_FEET_PER_RADIAN = 176,  // 176 磅力·英尺每弧度
    UNITS_CODE_POUND_FORCE_INCH_PER_RADIAN = 177,  // 177 磅力·英寸每弧度

    // 线性刚度单位代码
    UNITS_CODE_KILO_NEWTON_PER_METER = 170, // 170 千牛顿每米
    UNITS_CODE_NEWTON_PER_METER = 171,      // 171 牛顿每米
    UNITS_CODE_POUND_FORCE_PER_FOOT = 172,  // 172 磅力每英尺
    UNITS_CODE_POUND_FORCE_PER_INCH = 173,  // 173 磅力每英寸

    // 未使用
    UNITS_CODE_UNDEFINE = 250, // 未使用
} units_code_e;

// 5.3 传输功能代码
typedef enum
{
    TRANSMISSION_FUNCTION_CODE_LINEAR = 0,                                 // 线性的
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT = 1,                            // 平方根
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_CUBIC = 2,                      // 平方根三次方
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_FIFTH = 3,                      // 平方根的五次方
    TRANSMISSION_FUNCTION_CODE_SPECIAL_CURVE = 4,                          // 特殊曲线
    TRANSMISSION_FUNCTION_CODE_SQUARE = 5,                                 // Square
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_TRUNCATED = 6,                  // 平方根与截断。包括基于差压的流量测量截止阀
    TRANSMISSION_FUNCTION_CODE_EQUAL_PERCENT_1_25 = 10,                    // 相等百分比1:25
    TRANSMISSION_FUNCTION_CODE_EQUAL_PERCENT_1_33 = 11,                    // 相等百分比1:33
    TRANSMISSION_FUNCTION_CODE_EQUAL_PERCENT_1_50 = 12,                    // 相等百分比1:50
    TRANSMISSION_FUNCTION_CODE_FAST_OPEN_1_25 = 15,                        // 快速打开1:25
    TRANSMISSION_FUNCTION_CODE_FAST_OPEN_1_33 = 16,                        // 快速打开1:33
    TRANSMISSION_FUNCTION_CODE_FAST_OPEN_1_50 = 17,                        // 快速打开1:50
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_0_10 = 30,          // 双曲线:形状因子=0.10
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_0_20 = 31,          // 双曲线形状因子=0.20
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_0_30 = 32,          // 双曲线:形状因子=0.30
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_0_50 = 34,          // 双曲线:形状因子=0.50
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_0_70 = 37,          // 双曲线:形状因子=0.70
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_1_00 = 40,          // 双曲线:形状因子=1.00
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_1_50 = 41,          // 双曲线:形状因子=1.50
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_2_00 = 42,          // 双曲线:形状因子=2.00
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_3_00 = 43,          // 双曲线形状因子=3.00
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_4_00 = 44,          // 双曲线:形状因子=4.00
    TRANSMISSION_FUNCTION_CODE_HYPERBOLIC_SHAPE_FACTOR_5_00 = 45,          // 双曲线:形状因子=5.00
    TRANSMISSION_FUNCTION_CODE_FLAT_BOTTOM_TANK = 100,                     // 平底罐
    TRANSMISSION_FUNCTION_CODE_CONICAL_OR_PYRAMIDAL_BOTTOM_TANK = 101,     // 圆锥形或金字塔形底槽
    TRANSMISSION_FUNCTION_CODE_PARABOLIC_BOTTOM_TANK = 102,                // 抛物线底槽
    TRANSMISSION_FUNCTION_CODE_SPHERICAL_BOTTOM_TANK = 103,                // 球底储罐
    TRANSMISSION_FUNCTION_CODE_SLOPING_BOTTOM_TANK = 104,                  // 倾斜底槽
    TRANSMISSION_FUNCTION_CODE_FLAT_END_CYLINDRICAL_TANK = 105,            // 平端圆筒油箱
    TRANSMISSION_FUNCTION_CODE_PARABOLIC_END_CYLINDRICAL_TANK = 106,       // 抛物线形端圆筒形储罐
    TRANSMISSION_FUNCTION_CODE_SPHERICAL_TANK = 107,                       // 球罐
    TRANSMISSION_FUNCTION_CODE_DISCRETE_SWITCH = 230,                      // 分立式(开关)
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_PLUS_SPECIAL_CURVE = 231,       // 平方根加上特殊曲线
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_CUBIC_PLUS_SPECIAL_CURVE = 232, // 平方根三次幂加特殊曲线
    TRANSMISSION_FUNCTION_CODE_SQUARE_ROOT_FIFTH_PLUS_SPECIAL_CURVE = 233, // 平方根五次幂加特殊曲线
    TRANSMISSION_FUNCTION_CODE_NOT_USED = 250,                             // 未使用
    TRANSMISSION_FUNCTION_CODE_NONE = 251,                                 // 无
    TRANSMISSION_FUNCTION_CODE_UNKNOWN = 252,                              // 未知
    TRANSMISSION_FUNCTION_CODE_SPECIAL = 253                               // 特殊的
    // 210-229	枚举可用于制造商特定定义
    //  234-249	枚举可用于制造商特定定义
} transmission_function_code_e;

// 5.6 报警选择代码
typedef enum
{
    ALARM_CODE_HIGH = 0, // 高的
    ALARM_CODE_LOW = 1,  // 低的
    // 239 保持最后输出值
    ALARM_CODE_239 = 239,
    // 240-249 枚举可用于制造商特定定义

    // 250 Not Used
    ALARM_CODE_NOT_USED = 250,
    // 251 None
    ALARM_CODE_NONE = 251,
    // 252 Unknown
    ALARM_CODE_UNKNOWN = 252,
    // 253 特殊的
    ALARM_CODE_SPECIAL = 253
} alarms_code_e;

// 5.7 写保护代码
typedef enum
{

    WRITE_PROTECT_CODE_NOT_WRITE_PROTECT = 0, // 否-不写保护
    WRITE_PROTECT_CODE_WRITE_PROTECT = 1,     // 是-写保护
    // 240-249 枚举可用于制造商特定定义

    // 250 Not Used
    WRITE_PROTECT_CODE_NOT_USED = 250,
    // 251 None
    WRITE_PROTECT_CODE_NONE = 251,
    // 252 Unknown
    WRITE_PROTECT_CODE_UNKNOWN = 252,
    // 253 特殊的
    WRITE_PROTECT_CODE_SPECIAL = 253
} write_protect_code_e;

// 5.8 制造商识别码
typedef enum
{
    MANUFACTURER_IDENTIFIER_ACROMAG = 0x0001,
    // MANUFACTURER_IDENTIFIER_ALLENBRADLEY = 0x0002,
    // MANUFACTURER_IDENTIFIER_AMETEK = 0x0003,
    // MANUFACTURER_IDENTIFIER_ANALOGDEVICES = 0x0004,
    // MANUFACTURER_IDENTIFIER_ABB = 0x0005,
    // MANUFACTURER_IDENTIFIER_BECKMAN = 0x0006,
    // MANUFACTURER_IDENTIFIER_BELLMICROSENSOR = 0x0007,
    // MANUFACTURER_IDENTIFIER_BOURNS = 0x0008,
    // MANUFACTURER_IDENTIFIER_BRISTOLBABCOCK = 0x0009,
    // MANUFACTURER_IDENTIFIER_BROOKSINSTRUMENT = 0x000A,
    // MANUFACTURER_IDENTIFIER_CHESSELL = 0x000B,
    // MANUFACTURER_IDENTIFIER_COMBUSTIONENGINEERING = 0x000C,
    // MANUFACTURER_IDENTIFIER_DANIELINDUSTRIES = 0x000D,
    // MANUFACTURER_IDENTIFIER_DELTA = 0x000E,
    // MANUFACTURER_IDENTIFIER_DIETERICHSTANDARD = 0x000F,
    // MANUFACTURER_IDENTIFIER_DOHRMANN = 0x0010,
    // MANUFACTURER_IDENTIFIER_ENDRESSHAUSER = 0x0011,
    // MANUFACTURER_IDENTIFIER_ABB_BAILEYFISCHERANDPORTER = 0x0012,
    // MANUFACTURER_IDENTIFIER_FISHERCONTROLSINTLLC = 0x0013,
    // MANUFACTURER_IDENTIFIER_SCHNEIDERELECTRICSYSTEMSUSAINC = 0x0014,
    // MANUFACTURER_IDENTIFIER_FUJI = 0x0015,
    // MANUFACTURER_IDENTIFIER_ABB_HARTMANNANDBRAUN = 0x0016,
    // MANUFACTURER_IDENTIFIER_HONEYWELL = 0x0017,
    // MANUFACTURER_IDENTIFIER_ITTBARTON = 0x0018,
    // MANUFACTURER_IDENTIFIER_THERMOMEASURETECH = 0x0019,
    // MANUFACTURER_IDENTIFIER_ABB_2 = 0x001A,
    // MANUFACTURER_IDENTIFIER_LEEDSANDNORTHRUP = 0x001B,
    // MANUFACTURER_IDENTIFIER_LESLIE = 0x001C,
    // MANUFACTURER_IDENTIFIER_MSYSTEMCO = 0x001D,
    // MANUFACTURER_IDENTIFIER_MEASUREX = 0x001E,
    // MANUFACTURER_IDENTIFIER_MICROMOTION = 0x001F,
    // MANUFACTURER_IDENTIFIER_MOOREINDUSTRIES = 0x0020,
    // MANUFACTURER_IDENTIFIER_PRIMEMEASUREMENTPRODUCTS = 0x0021,
    // MANUFACTURER_IDENTIFIER_OHKURAELECTRIC = 0x0022,
    // MANUFACTURER_IDENTIFIER_PAINE = 0x0023,
    // MANUFACTURER_IDENTIFIER_ROCHESTERINSTRUMENTSYSTEMS = 0x0024,
    // MANUFACTURER_IDENTIFIER_RONAN = 0x0025,
    // MANUFACTURER_IDENTIFIER_ROSEMOUNT = 0x0026,
    // MANUFACTURER_IDENTIFIER_PEEKMEASUREMENT = 0x0027,
    // MANUFACTURER_IDENTIFIER_ACTARISNEPTUNE = 0x0028,
    // MANUFACTURER_IDENTIFIER_SENSALL = 0x0029,
    // MANUFACTURER_IDENTIFIER_SIEMENSAG = 0x002A,
    // MANUFACTURER_IDENTIFIER_WEED = 0x002B,
    // MANUFACTURER_IDENTIFIER_TOSHIBA = 0x002C,
    // MANUFACTURER_IDENTIFIER_TRANSMATION = 0x002D,
    // MANUFACTURER_IDENTIFIER_ROSEMOUNTANALYTICAL = 0x002E,
    // MANUFACTURER_IDENTIFIER_VALMET = 0x002F,
    // MANUFACTURER_IDENTIFIER_FLOWSERVE = 0x0030,
    // MANUFACTURER_IDENTIFIER_VAREC = 0x0031,
    // MANUFACTURER_IDENTIFIER_VIATRAN = 0x0032,
    // MANUFACTURER_IDENTIFIER_DELTA_WEED = 0x0033,
    // MANUFACTURER_IDENTIFIER_WESTINGHOUSE = 0x0034,
    // MANUFACTURER_IDENTIFIER_XOMOX = 0x0035,
    // MANUFACTURER_IDENTIFIER_AZBILCORPORATION = 0x0036,
    // MANUFACTURER_IDENTIFIER_YOKOGAWA = 0x0037,
    // MANUFACTURER_IDENTIFIER_NUOVOPIGNONE = 0x0038,
    // MANUFACTURER_IDENTIFIER_PROMAC = 0x0039,
    // MANUFACTURER_IDENTIFIER_EXACCORPORATION = 0x003A,
    // MANUFACTURER_IDENTIFIER_MOBREY = 0x003B,
    // MANUFACTURER_IDENTIFIER_ARCOMCONTROLSYSTEMS = 0x003C,
    // MANUFACTURER_IDENTIFIER_PRINCO = 0x003D,
    // MANUFACTURER_IDENTIFIER_SMAR = 0x003E,
    // MANUFACTURER_IDENTIFIER_SCHNEIDERELECTRICSYSTEMSUSAINC_2 = 0x003F,
    // MANUFACTURER_IDENTIFIER_MEASUREMENTTECHNOLOGY = 0x0040,
    // MANUFACTURER_IDENTIFIER_APPLIEDSYSTEMTECHNOLOGIES = 0x0041,
    // MANUFACTURER_IDENTIFIER_SAMSON = 0x0042,
    // MANUFACTURER_IDENTIFIER_SPARLINGINSTRUMENTS = 0x0043,
    // MANUFACTURER_IDENTIFIER_FIREYE = 0x0044,
    // MANUFACTURER_IDENTIFIER_KROHNE = 0x0045,
    // MANUFACTURER_IDENTIFIER_BETZ = 0x0046,
    // MANUFACTURER_IDENTIFIER_DRUCK = 0x0047,
    // MANUFACTURER_IDENTIFIER_SOR = 0x0048,
    // MANUFACTURER_IDENTIFIER_ELCONINSTRUMENTS = 0x0049,
    // MANUFACTURER_IDENTIFIER_SPIRAXSARCO = 0x004A,
    // MANUFACTURER_IDENTIFIER_TERMIFLEXCORPORATION = 0x004B,
    // MANUFACTURER_IDENTIFIER_VAFINSTRUMENTS = 0x004C,
    // MANUFACTURER_IDENTIFIER_WESTLOCKCONTROLS = 0x004D,
    // MANUFACTURER_IDENTIFIER_AMETEKDREXELBROOK = 0x004E,
    // MANUFACTURER_IDENTIFIER_ROSEMOUNTTANKRADAR = 0x004F,
    // MANUFACTURER_IDENTIFIER_ABB_KTEK = 0x0050,
    // MANUFACTURER_IDENTIFIER_SENSIDYNEINC = 0x0051,
    // MANUFACTURER_IDENTIFIER_DRAEGER = 0x0052,
    // MANUFACTURER_IDENTIFIER_RAYTEK = 0x0053,
    // MANUFACTURER_IDENTIFIER_SIEMENSMILLTRONICSP = 0x0054,
    // MANUFACTURER_IDENTIFIER_BTG = 0x0055

    MANUFACTURER_IDENTIFIER_LAPOOL = 0xFFFF,
} manufacturer_identifier_e;

// 5.9 突发模式控制码
typedef enum
{
    BURST_MODE_CONTROL_CODE_0 = 0,     // 离开
    BURST_MODE_CONTROL_CODE_1 = 1,     // 仅在令牌传递数据链路层上启用突发
    BURST_MODE_CONTROL_CODE_2 = 2,     // 仅在TDMA数据链路层启用突发
    BURST_MODE_CONTROL_CODE_3 = 3,     // 在TDMA和令牌传递数据链路层上启用突发
    BURST_MODE_CONTROL_CODE_4 = 4,     // 在HART-IP连接上启用突发
    BURST_MODE_CONTROL_CODE_250 = 250, // 保留的
    BURST_MODE_CONTROL_CODE_251 = 251, // 保留的
    BURST_MODE_CONTROL_CODE_252 = 252, // 保留的
    BURST_MODE_CONTROL_CODE_253 = 253, // 保留的
} burst_mode_control_code_e;

// 5.10 物理信号
typedef enum
{
    // Bell 202 Current
    PHYSICAL_SIGNALS_0 = 0x00,
    // Bell 202 Voltage
    PHYSICAL_SIGNALS_1 = 0x01,
    // RS-485
    PHYSICAL_SIGNALS_2 = 0x02,
    // RS-232
    PHYSICAL_SIGNALS_3 = 0x03,
    // Wireless
    PHYSICAL_SIGNALS_4 = 0x04,
    // Special(includes,for example, Ethernet,TCP/IP,WiFi,etc.)
    PHYSICAL_SIGNALS_5 = 0x05,
} physical_signals_e;

// 5.14 操作模式代码
typedef enum
{
    OPERATING_MODE_CODES_0 = 0,
} operating_mode_codes_e;

// 5.15 模拟通道代码
typedef enum
{
    ANALOG_CHANNEL_NUMBER_CODES_0 = 0, // Analog Channel0(PV)
    ANALOG_CHANNEL_NUMBER_CODES_1 = 1, // Analog Channel1(SV)
    ANALOG_CHANNEL_NUMBER_CODES_2 = 2, // Analog Channel2(TV)
    ANALOG_CHANNEL_NUMBER_CODES_3 = 3, // Analog Channel3(QV)
    ANALOG_CHANNEL_NUMBER_CODES_4 = 4, // Analog Channel 4
    ANALOG_CHANNEL_NUMBER_CODES_MAX,
} analog_channel_number_codes_e;

// 5.16 回路电流模式
typedef enum
{
    // 关闭
    LOOP_CURRENT_MODE_0 = 0x00,
    // 使能
    LOOP_CURRENT_MODE_1 = 0x01,
} loop_current_mode_e;

// 5.17 扩展现场设备状态
typedef enum
{
    // 正常
    EXTENDED_DEVICE_STATUS_0 = 0x00,
    // 需要维护。[浓缩状态]此位设置用于指示设备未发生故障时，现场设备需要维护。支持此位的设备应支持压缩状态命令（请参阅通用操作命令规范）
    EXTENDED_DEVICE_STATUS_1 = BIT0,
    // 设备变量警报，如果任何设备变量处于警报或警告状态，则设置此位。主机应使用设备变量状态指示器识别导致设置的设备变量
    EXTENDED_DEVICE_STATUS_2 = BIT1,
    // 关键电源故障。适用于可以通过存储电源进行操作的设备。该位是在功率变得极低时设置的。例如，一个清除电源的设备失去电源就会设置这个位。设备必须能够从该位开始维持其网络连接至少15分钟。如果设备的功率水平下降得太低，则设备可能会开始正常断开与网络的连接
    EXTENDED_DEVICE_STATUS_3 = BIT2,
    // 故障。压缩状态当设置此位时，由于现场设备或其外围设备的故障，一个或多个设备变量（例如测量或控制值）无效。支持此位的设备必须支持浓缩状态命令（请参阅通用规程命令规范）
    EXTENDED_DEVICE_STATUS_4 = BIT3,
    // 超出规格。设置时处于浓缩状态。该位表示已检测到与允许环境或工艺条件的偏差，这可能会影响测量或控制精度（即，在给定当前操作条件的情况下，设备性能可能会降低）。支持此位的设备必须支持精简状态命令（请参阅通用规程命令规范）。
    EXTENDED_DEVICE_STATUS_5 = BIT4,
    // 功能检查。压缩状态如果一个或多个设备变量由于设备上正在进行的工作而暂时无效（例如冻结），则设置此位。支持该位的设备必须支持浓缩状态命令（见通用规程命令规范）
    EXTENDED_DEVICE_STATUS_6 = BIT5,
} extended_device_status_e;

// 5.18 锁定设备代码
typedef enum
{
    // 解锁
    LOCK_DEVICE_CODE_0 = 0x00,
    // 锁-临时(即设备复位或断电释放锁定)。只有锁定主机才能解锁
    LOCK_DEVICE_CODE_1 = 0x01,
    // 锁定-永久(即设备复位或断电不影响锁定)。只有锁定主机才能解锁
    LOCK_DEVICE_CODE_2 = 0x02,
    // 全部锁定-任何主机都不允许对设备的配置进行更改。此外，设备复位或电源丢失不影响Lock24。任何主机都可以解锁。
    LOCK_DEVICE_CODE_3 = 0x03,
    LOCK_DEVICE_CODE_MAX,
} lock_device_code_e;

// 5.19 写设备变量代码
typedef enum
{
    WRITE_DEVICE_VARIABLE_COMMAND_CODE_0 = 0x00, // 正常(设备计算的值不是模拟的)
    WRITE_DEVICE_VARIABLE_COMMAND_CODE_1 = 0x01, // 固定值(模拟设备计算的值)
} write_device_variable_command_code_e;

// 5.20 设备变量系列代码
typedef enum
{
    // 0-3 保留的。不得使用
    //  温度
    DEVICE_VARIABLE_FAMILY_CODE_4 = 0x04,
    // 压力
    DEVICE_VARIABLE_FAMILY_CODE_5 = 0x05,
    // 阀门/执行器
    DEVICE_VARIABLE_FAMILY_CODE_6 = 0x06,
    // 简单PID控制
    DEVICE_VARIABLE_FAMILY_CODE_7 = 0x07,
    // ph值
    DEVICE_VARIABLE_FAMILY_CODE_8 = 0x08,
    // 传导性
    DEVICE_VARIABLE_FAMILY_CODE_9 = 0x09,
    // 累加器
    DEVICE_VARIABLE_FAMILY_CODE_10 = 0x0A,
    // 等级
    DEVICE_VARIABLE_FAMILY_CODE_11 = 0x0B,
    // 涡流
    DEVICE_VARIABLE_FAMILY_CODE_12 = 0x0C,
    // 马赫流量
    DEVICE_VARIABLE_FAMILY_CODE_13 = 0x0D,
    // 科氏流
    DEVICE_VARIABLE_FAMILY_CODE_14 = 0x0E,
    // 调制最终控制
    DEVICE_VARIABLE_FAMILY_CODE_15 = 0x0F,
    // 132-249 保留的。不得使用
    // 250 未使用
    DEVICE_VARIABLE_FAMILY_CODE_250 = 0xFA,
} device_variable_family_code_e;

// 5.21 设备变量分类代码
typedef enum
{
    // 设备变量未分类
    DEVICE_VARIABLE_CLASSIFICATION_CODE_0 = 0x00,
    // 1-63 保留的
    // 温度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_64 = 0x40,
    // 压力
    DEVICE_VARIABLE_CLASSIFICATION_CODE_65 = 0x41,
    // 体积流量
    DEVICE_VARIABLE_CLASSIFICATION_CODE_66 = 0x42,
    // 速度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_67 = 0x43,
    // 体积
    DEVICE_VARIABLE_CLASSIFICATION_CODE_68 = 0x44,
    // 长度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_69 = 0x45,
    // 时间
    DEVICE_VARIABLE_CLASSIFICATION_CODE_70 = 0x46,
    // 块
    DEVICE_VARIABLE_CLASSIFICATION_CODE_71 = 0x47,
    // 质量流量
    DEVICE_VARIABLE_CLASSIFICATION_CODE_72 = 0x48,
    // 每体积质量
    DEVICE_VARIABLE_CLASSIFICATION_CODE_73 = 0x49,
    // 粘度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_74 = 0x4A,
    // 角速度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_75 = 0x4B,
    // 区域
    DEVICE_VARIABLE_CLASSIFICATION_CODE_76 = 0x4C,
    // 能源(工作)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_77 = 0x4D,
    // 力
    DEVICE_VARIABLE_CLASSIFICATION_CODE_78 = 0x4E,
    // 力量
    DEVICE_VARIABLE_CLASSIFICATION_CODE_79 = 0x4F,
    // 频率
    DEVICE_VARIABLE_CLASSIFICATION_CODE_80 = 0x50,
    // 分析的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_81 = 0x51,
    // 电容
    DEVICE_VARIABLE_CLASSIFICATION_CODE_82 = 0x52,
    // 电动势/电势
    DEVICE_VARIABLE_CLASSIFICATION_CODE_83 = 0x53,
    // 电流
    DEVICE_VARIABLE_CLASSIFICATION_CODE_84 = 0x54,
    // 抵抗
    DEVICE_VARIABLE_CLASSIFICATION_CODE_85 = 0x55,
    // 角
    DEVICE_VARIABLE_CLASSIFICATION_CODE_86 = 0x56,
    // 电导
    DEVICE_VARIABLE_CLASSIFICATION_CODE_87 = 0x57,
    // 每卷
    DEVICE_VARIABLE_CLASSIFICATION_CODE_88 = 0x58,
    // 每质量体积
    DEVICE_VARIABLE_CLASSIFICATION_CODE_89 = 0x59,
    // 浓度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_90 = 0x5A,
    // 保留的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_91 = 0x5B,
    // 保留的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_92 = 0x5C,
    // 保留的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_93 = 0x5D,
    // 保留的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_94 = 0x5E,
    // 保留的
    DEVICE_VARIABLE_CLASSIFICATION_CODE_95 = 0x5F,
    // 加速
    DEVICE_VARIABLE_CLASSIFICATION_CODE_96 = 0x60,
    // 浊度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_97 = 0x61,
    // 温差
    DEVICE_VARIABLE_CLASSIFICATION_CODE_98 = 0x62,
    // 气体体积流量(每秒)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_99 = 0x63,
    // 气体体积流量(每分钟)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_100 = 0x64,
    // 气体体积流量(每小时)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_101 = 0x65,
    // 气体体积流量(每天)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_102 = 0x66,
    // 体积液体流量(每秒)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_103 = 0x67,
    // 体积液体流量(每分钟)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_104 = 0x68,
    // 容积液体流量(每小时)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_105 = 0x69,
    // 容积液体流量(每天)
    DEVICE_VARIABLE_CLASSIFICATION_CODE_106 = 0x6A,
    // 热胀
    DEVICE_VARIABLE_CLASSIFICATION_CODE_107 = 0x6B,
    // 体积能量密度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_108 = 0x6C,
    // 质量能量密度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_109 = 0x6D,
    // 转矩
    DEVICE_VARIABLE_CLASSIFICATION_CODE_110 = 0x6E,
    // 杂项
    DEVICE_VARIABLE_CLASSIFICATION_CODE_111 = 0x6F,
    // 扭转刚度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_112 = 0x70,
    // 线性刚度
    DEVICE_VARIABLE_CLASSIFICATION_CODE_113 = 0x71,
} device_variable_classification_code_e;

// 5.22 微调代码
typedef enum
{
    TRIM_POINTS_0 = 0, // 不支持修剪点
    TRIM_POINTS_1 = 1, // 支持下调整点
    TRIM_POINTS_2 = 2, // 支撑上装饰点
    TRIM_POINTS_3 = 3, // 支持下和上修剪点
} trim_points_e;

// 5.26 模拟通道标志
typedef enum
{
    ANALOG_CHANNEL_CODE_0 = 0, // 任何未涵盖的位都是“未定义”，必须设置为零
    ANALOG_CHANNEL_CODE_1 = 1, // 设置时，此模拟通道是场设备模拟输入通道。换句话说，在设置此位时，现场设备有一个与此信道连接的ADC当重置为零时，模拟通道是模拟输出(ADC连接到通道)
} analog_channel_code_e;

// 5.27 模拟通道饱和
typedef enum
{
    ANALOG_CHANNEL_SATURATED_0 = 0,
    ANALOG_CHANNEL_SATURATED_1 = BIT0, // 次级模拟通道饱和
    ANALOG_CHANNEL_SATURATED_2 = BIT1, // 第三模拟通道饱和
    ANALOG_CHANNEL_SATURATED_3 = BIT2, // 四阶模拟信道饱和
    ANALOG_CHANNEL_SATURATED_4 = BIT3  // 五进制模拟通道饱和
} analog_channel_saturated_e;

// 5.28 固定模拟通道
typedef enum
{
    ANALOG_CHANNEL_FIXED_0 = 0,
    ANALOG_CHANNEL_FIXED_1 = BIT0, // 辅助模拟通道固定
    ANALOG_CHANNEL_FIXED_2 = BIT1, // 三级模拟通道固定
    ANALOG_CHANNEL_FIXED_3 = BIT2, // 四元模拟通道固定
    ANALOG_CHANNEL_FIXED_4 = BIT3  // 固定五进制模拟通道
} analog_channel_fixed_e;

// 5.29 标准化状态0
typedef enum
{
    STANDARDIZED_STATUS0_0 = 0,
    STANDARDIZED_STATUS0_1 = BIT0, // 设备变量模拟激活。设备处于模拟模式，并且其一个或多个设备变量不能代表该过程
    STANDARDIZED_STATUS0_2 = BIT1, // 非易失性存储器缺陷。非易失性内存检查无效或可能已损坏，或电池支持内存的电池有缺陷
    STANDARDIZED_STATUS0_3 = BIT2, // 易失性存储器缺陷。RAM内存检查无效或可能已损坏
    STANDARDIZED_STATUS0_4 = BIT3, // 看门狗复位执行。已执行看门狗复位
    STANDARDIZED_STATUS0_5 = BIT4, // 电源条件超出范围。电源、电源或电压超出其允许范围
    STANDARDIZED_STATUS0_6 = BIT5, // 环境条件超出范围。内部或环境条件超出可接受限度
    STANDARDIZED_STATUS0_7 = BIT6, // 电子缺陷。检测到与传感器无关的硬件问题
    STANDARDIZED_STATUS0_8 = BIT7  // 设备配置已锁定。设备处于写保护状态或已锁定
} standardized_status0_e;
// 5.30 标准化状态1
typedef enum
{
    STANDARDIZED_STATUS1_0 = 0,
    STANDARDIZED_STATUS1_1 = BIT0, // 状态模拟激活。状态模拟模式已被启用，设备状态和命令48响应中返回的状态位是固定的，可能不代表设备的当前状态
    STANDARDIZED_STATUS1_2 = BIT1, // 离散变量模拟激活。设备处于模拟模式，其一个或多个离散变量不能代表过程
    STANDARDIZED_STATUS1_3 = BIT2, // 事件通知溢出。当一个或多个事件规范(见通用实践命令规范中的事件通知)的事件队列溢出导致事件不能被记录时，必须设置该位。当所有挂起事件都已确认  时，此位必须重置
    STANDARDIZED_STATUS1_4 = BIT3, // 电池或电源需要维护。当现场设备中的电池需要更换/充电时，必须设置此位。此位也必须被设置，如果电源需要维护
    STANDARDIZED_STATUS1_5 = BIT4  // 保留的。必须设置(0)
} standardized_status1_e;

// 5.31 标准化状态2
typedef enum
{
    STANDARDIZED_STATUS2_0 = 0,
    STANDARDIZED_STATUS2_1 = BIT0, // 子设备列表已更改。设置时，/0系统与它的一个子设备失去了通信，或者发现了一个新的子设备。发出命令74以读取“检测到的设备的数目“或发出命令84以“子设备索引”为0或1仅仅重置该位”。使用Command读取当前子设备列表
    STANDARDIZED_STATUS2_2 = BIT1, // 检测到重复的主设备。Adapter发现另一个主机与它的令牌传递接口具有相同的地址
    STANDARDIZED_STATUS2_3 = BIT2, // 子设备不匹配。连接到系统的一个或多个子设备与所存储的/预配置的值不匹配
    STANDARDIZED_STATUS2_4 = BIT3, // 发现具有重复ID的子设备，发现连接到U/O系统的具有重复唯一ID或长标签的子设备
    STANDARDIZED_STATUS2_5 = BIT4  // 陈旧数据通知。当设置任何子设备的陈旧数据报警时，设置此位
} standardized_status2_e;

// 5.32 标准化状态3
typedef enum
{
    STANDARDIZED_STATUS3_0 = 0,
    STANDARDIZED_STATUS3_1 = BIT0, // 拒绝容量。设备无法获取支持指定的突发消息传递所需的通信带宽。如果网络管理器减少了分配给设备的带宽，也必须设置此值。当网络中的任何设备带宽不足时，网关必须设置此位
    STANDARDIZED_STATUS3_2 = BIT1, // 保留，必须设置为0
    STANDARDIZED_STATUS3_3 = BIT2, // 带宽分配挂起。设备已向网络管理器请求带宽，正在等待网络管理器的响应
    STANDARDIZED_STATUS3_4 = BIT3, // 块传输挂起。该设备有一个数据集(例如，波形)等待传输到主机应用程序或网关。网关应打开块传输端口并传输数据
    STANDARDIZED_STATUS3_5 = BIT4  // 无线电故障，radio或radio模块发生故障，设备需要维修或更换。设备状态字节中的“设备故障”位必须在设置此位时设置。
} standardized_status3_e;

// 5.33 突发消息触发代码
typedef enum
{
    BURST_MESSAGE_TRIGGER_CODE_0 = 0, // 连续的。突发消息在(最坏情况) 最小更新周期内连续发布
    BURST_MESSAGE_TRIGGER_CODE_1 = 1, // 窗口中。当源值偏离超过指定的触发值时，触发突发消息
    BURST_MESSAGE_TRIGGER_CODE_2 = 2, // 正在上升。当源值高于指定的触发值时触发突发消息
    BURST_MESSAGE_TRIGGER_CODE_3 = 3, // 在下降。当源值低于指定的触发值时触发突发消息
    BURST_MESSAGE_TRIGGER_CODE_4 = 4, // 在改变。当消息中的任何值改变时，突发消息被触发
} burst_message_trigger_code_e;

// 5.34 设备变量代码
typedef enum
{
    // 0-239 枚举可用于制造商特定定义
    DEVICE_VARIABLE_CODE_TEMPERATURE = 0x01,  // 仪器的内部温度
    DEVICE_VARIABLE_CODE_LOOP_CURRENT = 0x02, // 回路电流
    DEVICE_VARIABLE_CODE_TARGET = 0x03,       // 目标行程
    DEVICE_VARIABLE_CODE_ACTUAL = 0x04,       // 实际行程
    DEVICE_VARIABLE_CODE_PRESSURE_S = 0x05,   // 气压S
    DEVICE_VARIABLE_CODE_PRESSURE_A = 0x06,   // 气压A
    DEVICE_VARIABLE_CODE_PRESSURE_B = 0x07,   // 气压B

    // 读写参数部分
    DEVICE_VARIABLE_CODE_DISPLAY_DIRECTION = 0x32,                    // 显示方向
    DEVICE_VARIABLE_CODE_LANGUAGE = 0x33,                             // 显示语言
    DEVICE_VARIABLE_CODE_POLL_ADDRESS = 0x34,                         // 控制器地址(轮询地址)
    DEVICE_VARIABLE_CODE_WORKMODE = 0x35,                             // 工作模式
    DEVICE_VARIABLE_CODE_TRAVEL_TYPE = 0x36,                          // 行程类型, 直行程/角行程
    DEVICE_VARIABLE_CODE_TRAVEL_RANGE_SELF = 0x37,                    // 行程范围选择
    DEVICE_VARIABLE_CODE_TRAVEL_DISP_MODE = 0x38,                     // 行程百分比显示方式
    DEVICE_VARIABLE_CODE_TRAVEL_UNIT = 0x39,                          // 行程显示单位
    DEVICE_VARIABLE_CODE_TRAVEL_RATE_OPEN = 0x3A,                     // 阀门打开(上行)变化速率
    DEVICE_VARIABLE_CODE_TRAVEL_RATE_CLOSE = 0x3B,                    // 阀门关闭(下行)变化速率
    DEVICE_VARIABLE_CODE_TRAVEL_ERROR = 0x3C,                         // 行程偏差报警点
    DEVICE_VARIABLE_CODE_TRAVEL_ERROR_WAIT_TIME = 0x3D,               // 行程偏差报警等待时间(秒)
    DEVICE_VARIABLE_CODE_TRAVEL_DEAD = 0x3E,                          // 死区(%)
    DEVICE_VARIABLE_CODE_TRAVEL_DEAD_UPPER = 0x3F,                    // 死区报警上限
    DEVICE_VARIABLE_CODE_TRAVEL_DEAD_UPPER_WAIT_TIME = 0x40,          // 死区更新等待时间
    DEVICE_VARIABLE_CODE_TRAVEL_SUM = 0x41,                           // 累计行程
    DEVICE_VARIABLE_CODE_TRAVEL_SUM_UPPER = 0x42,                     // 累计行程上限
    DEVICE_VARIABLE_CODE_ACT_NUMBER = 0x43,                           // 动作次数
    DEVICE_VARIABLE_CODE_ACT_NUMBER_UPPER = 0x44,                     // 动作次数上限
    DEVICE_VARIABLE_CODE_TRAVEL_UPPER_ALARM = 0x45,                   // 行程高位置报警线
    DEVICE_VARIABLE_CODE_TRAVEL_LOWER_ALARM = 0x46,                   // 行程低位置报警线
    DEVICE_VARIABLE_CODE_SW1_TRIGGER_LOGIC = 0x47,                    // 阀门开关SWO1触发条件
    DEVICE_VARIABLE_CODE_SW1_TRIGGER_VALUE = 0x48,                    // 阀门开关SWO1触发值
    DEVICE_VARIABLE_CODE_SW2_TRIGGER_LOGIC = 0x49,                    // 阀门开关SWO2触发条件
    DEVICE_VARIABLE_CODE_SW2_TRIGGER_VALUE = 0x4A,                    // 阀门开关SWO2触发值
    DEVICE_VARIABLE_CODE_INPUTIL = 0x4B,                              // 输入电流最低
    DEVICE_VARIABLE_CODE_INPUTIH = 0x4C,                              // 输入电流最高
    DEVICE_VARIABLE_CODE_INPUT_ILOW_ALARM = 0x4D,                     // 电流报警下限
    DEVICE_VARIABLE_CODE_PRESS_UNIT = 0x4E,                           // 压力单位
    DEVICE_VARIABLE_CODE_SUPPLY_PRESSURE = 0x4F,                      // 输入的额定气源压力
    DEVICE_VARIABLE_CODE_SUPPLY_PRESSURE_ERROR = 0x50,                // 气源偏差范围±%
    DEVICE_VARIABLE_CODE_SUPPLY_PRESSURE_ERROR_WAIT_TIME = 0x51,      // 气源偏差报警等待时间(秒)
    DEVICE_VARIABLE_CODE_VALVE_CHARACTERISTICS = 0x52,                // 阀门特性
    DEVICE_VARIABLE_CODE_SELF_VCHART = 0x53,                          // 自定义阀门特性
    DEVICE_VARIABLE_CODE_SMALL_SIGNAL_CUT_ENABLE = 0x54,              // 小信号切除
    DEVICE_VARIABLE_CODE_SMALL_SIGNAL_UPPER = 0x55,                   // 小信号上限
    DEVICE_VARIABLE_CODE_SMALL_SIGNAL_LOWER = 0x56,                   // 小信号下限
    DEVICE_VARIABLE_CODE_ACTUATOR = 0x57,                             // 执行机构单/双作用
    DEVICE_VARIABLE_CODE_CONTROLLER_ACTION = 0x58,                    // 定位器(控制器)正/反作用
    DEVICE_VARIABLE_CODE_AIR_ACTION = 0x59,                           // 气开/气关设置
    DEVICE_VARIABLE_CODE_SPEED_INCREASER_ENABLE = 0x5A,               // 增速器
    DEVICE_VARIABLE_CODE_QUICK_EXHAUST_VALVE_ENABLE = 0x5B,           // 快排阀
    DEVICE_VARIABLE_CODE_DAC_ALARM_WAIT_TIME = 0x5C,                  // 放大器报警设置
    DEVICE_VARIABLE_CODE_PID_INDEX = 0x5D,                            // PID参数选择
    DEVICE_VARIABLE_CODE_APID_KP = 0x5E,                              // 自适应P
    DEVICE_VARIABLE_CODE_APID_TI = 0x5F,                              // 自适应I
    DEVICE_VARIABLE_CODE_APID_TD = 0x60,                              // 自适应D
    DEVICE_VARIABLE_CODE_SPID_KP = 0x61,                              // 自定义P
    DEVICE_VARIABLE_CODE_SPID_TI = 0x62,                              // 自定义I
    DEVICE_VARIABLE_CODE_SPID_TD = 0x63,                              // 自定义D
    DEVICE_VARIABLE_CODE_INTEGRAL_ENABLE = 0x64,                      // 积分使能
    DEVICE_VARIABLE_CODE_INI_INTEGRAL = 0x65,                         // 积分初始值
    DEVICE_VARIABLE_CODE_INTEGRAL_ZONE = 0x66,                        // 积分工作区域(%)
    DEVICE_VARIABLE_CODE_ALARM_HANDLE_MODE = 0x67,                    // 报警处理方式
    DEVICE_VARIABLE_CODE_TEMPERATURE_UPPER_ALARM = 0x68,              // 温度报警上限
    DEVICE_VARIABLE_CODE_TEMPERATURE_LOWER_ALARM = 0x69,              // 温度报警下限
    DEVICE_VARIABLE_CODE_FRICTION_UPPER = 0x6A,                       // 允许的摩擦力上限
    DEVICE_VARIABLE_CODE_FRICTION_LOWER = 0x6B,                       // 允许的摩擦力下限
    DEVICE_VARIABLE_CODE_ELASTICITY_UPPER = 0x6C,                     // 允许的弹力范围上限
    DEVICE_VARIABLE_CODE_ELASTICITY_LOWER = 0x6D,                     // 允许的弹力范围下限
    DEVICE_VARIABLE_CODE_SAVE_RECORD_INTERVAL = 0x6E,                 // 记录存储间隔时间(秒)
    DEVICE_VARIABLE_CODE_CONTROL_MODE = 0x6F,                         // 开机恢复到上一次位置使能
    DEVICE_VARIABLE_CODE_PROCESS_CHANGE_FLAG = 0x70,                  // 磁条接收的反馈电压
    DEVICE_VARIABLE_CODE_PART_TRAVEL_ENABLE = 0x71,                   // 部分行程使能
    DEVICE_VARIABLE_CODE_PART_TRAVEL_MIN = 0x72,                      // 部分行程最小值
    DEVICE_VARIABLE_CODE_PART_TRAVEL_MAX = 0x73,                      // 部分行程最大值
    DEVICE_VARIABLE_CODE_WIRELESS_COMM_ENABLE = 0x74,                 // 无线通讯使能
    DEVICE_VARIABLE_CODE_M_AOUTPUT_ENABLE = 0x75,                     // PWM 4-20mA使能
    DEVICE_VARIABLE_CODE_PRESSURE_OFFSET = 0x76,                      // 压力偏移量
    DEVICE_VARIABLE_CODE_TRAVEL_GAP = 0x77,                           // 间隙控制范围(%)
    DEVICE_VARIABLE_CODE_MAGNETIC_STRIPE_SPECIFICATION_NUMBER = 0x78, // 磁条规格序号
    DEVICE_VARIABLE_CODE_VALVE_SERIAL_NUM = 0x79,                     // 阀门序列号
    DEVICE_VARIABLE_CODE_INST_SERIAL_NUM = 0x7A,                      // 仪表序列号
    DEVICE_VARIABLE_CODE_VALVE_STYLE = 0x7B,                          // 阀门类型
    DEVICE_VARIABLE_CODE_SPEC_VALVE_SIZE = 0x7C,                      // 规格阀门尺寸
    DEVICE_VARIABLE_CODE_SPEC_VALVE_CLASS = 0x7D,                     // 规格阀门等级
    DEVICE_VARIABLE_CODE_SPEC_VALVE_STEM_DIAMETER = 0x7E,             // 规格阀门杆直径
    DEVICE_VARIABLE_CODE_SPEC_VALVE_PACKING_TYPE = 0x7F,              // 规格包装类型

    // 只读参数部分
    DEVICE_VARIABLE_CODE_TRAVEL_VOL0 = 0x96,              // 行程起点反馈电压
    DEVICE_VARIABLE_CODE_TRAVEL_VOL100 = 0x97,            // 行程终点反馈电压
    DEVICE_VARIABLE_CODE_TRAVEL_PRESSURE_A0 = 0x98,       // 整定时，阀门A 0%气压值
    DEVICE_VARIABLE_CODE_TRAVEL_PRESSURE_A100 = 0x99,     // 整定时，阀门A 100%气压值
    DEVICE_VARIABLE_CODE_TRAVEL_PRESSURE_B0 = 0x9A,       // 整定时，阀门B 0%气压值
    DEVICE_VARIABLE_CODE_TRAVEL_PRESSURE_B100 = 0x9B,     // 整定时，阀门B 100%气压值
    DEVICE_VARIABLE_CODE_OUTPUT_MAX = 0x9C,               // 整定时，阀门动作的所需要的上限值
    DEVICE_VARIABLE_CODE_OUTPUT_MIN = 0x9D,               // 整定时，阀门动作的所需要的下限值
    DEVICE_VARIABLE_CODE_POS_MID_OUTPUT_VAL = 0x9E,       // DAC中间值 用于刹车
    DEVICE_VARIABLE_CODE_ALL_OPEN_TIME = 0x9F,            // 阀门全开时间
    DEVICE_VARIABLE_CODE_ALL_CLOSE_TIME = 0xA0,           // 阀门全关时间
    DEVICE_VARIABLE_CODE_FRICTION = 0xA1,                 // 摩擦力
    DEVICE_VARIABLE_CODE_ELASTICITY = 0xA2,               // 弹簧力
    DEVICE_VARIABLE_CODE_TUNEDFLAG = 0xA3,                // 整定状态
    DEVICE_VARIABLE_CODE_CURRENT_CALIBRATION_A = 0xA4,    // PWM电流标定4ma值
    DEVICE_VARIABLE_CODE_CURRENT_CALIBRATION_B = 0xA5,    // PWM电流标定20ma值
    DEVICE_VARIABLE_CODE_MINOR_LOOP_VOL0_VAL = 0xA6,      // 小回路最小值
    DEVICE_VARIABLE_CODE_MINOR_LOOP_VOL100_VAL = 0xA7,    // 小回路最大值
    DEVICE_VARIABLE_CODE_SPEC_VALVE_RATED_TRAVEL = 0xA9,  // 目标行程
    DEVICE_VARIABLE_CODE_SPEC_VALVE_ACTUAL_TRAVEL = 0xAA, // 实际行程
    DEVICE_VARIABLE_CODE_MAX_RECORDED_TEMP = 0xAB,        // 最高记录温度
    DEVICE_VARIABLE_CODE_MIN_RECORDED_TEMP = 0xAC,        // 最低记录温度
    DEVICE_VARIABLE_CODE_NUMBER_OF_POWER_UPS = 0xAD,      // 加电次数

    //(可选)电池电压(单位代码为“伏特”设备变量分类为“设备变量未分类”)。警告:取决于电池技术，电池电压不能提供剩余电池寿命的良好指标(即电池中剩余的电量)
    DEVICE_VARIABLE_CODE_242 = 0xF2,
    // 电池寿命(浮动天数;单位代码为“天”;设备变量分类为“设备变量未分类”)
    DEVICE_VARIABLE_CODE_243 = 0xF3,
    // 百分比范围(单位代码为“百分比”;设备变量分类为“设备变量未分类”)
    DEVICE_VARIABLE_CODE_244 = 0xF4,
    // 回路电流(单位代码为“Miliamperes.31，设备变量分类为“设备变量未分类”)
    DEVICE_VARIABLE_CODE_245 = 0xF5,
    // 主变量
    DEVICE_VARIABLE_CODE_246 = 0xF6,
    // 次要变量
    DEVICE_VARIABLE_CODE_247 = 0xF7,
    // 三级变量
    DEVICE_VARIABLE_CODE_248 = 0xF8,
    // 四级变量
    DEVICE_VARIABLE_CODE_249 = 0xF9,
    // 250 未使用(此代码必须仅在满足协议命令要求时返回。见，例如，常用命令规范)
    DEVICE_VARIABLE_CODE_250 = 0xFA,
    DEVICE_VARIABLE_CODE_251 = 0xFB, // 251 未使用
    DEVICE_VARIABLE_CODE_MAX,
} device_variable_code_e;

// 5.37 趋势控制代码
typedef enum
{
    TREND_CONTROL_CODE_0 = 0x00, // 禁用
    TREND_CONTROL_CODE_1 = 0x01, // 启用单一数据点趋势分析
    TREND_CONTROL_CODE_2 = 0x02, // 启用筛选趋势。使用等于趋势样本周期三分之一的时间常数对样本进行过滤
    TREND_CONTROL_CODE_3 = 0x03, // 启用平均趋势(可选)。换句话说，就是将周期内所有样本之和除以样本总数所得到的值
    TREND_CONTROL_CODE_MAX,
} trend_control_code_e;

// 5.38 时间设置代码
typedef enum
{
    TIME_SETTING_CODE_0 = 0x00, // 离开
    TIME_SETTING_CODE_1 = 0x01, // 在令牌传递数据链路层上启用事件通知
    TIME_SETTING_CODE_2 = 0x02, // 在TDMA数据链路层上启用事件通知
    TIME_SETTING_CODE_3 = 0x03, // 在TDMA和令牌传递数据链路层上启用事件通知
    TIME_SETTING_CODE_MAX,
} time_setting_code_e;

// 5.41 同步操作控制代码
typedef enum
{
    SYNCHRONIZATION_OPERATION_CONTROL_CODE_1 = BIT0,  // 命令当设置指示的命令将被执行在指定的时间。当重置一个设备变量要被采样
    SYNCHRONIZATION_OPERATION_CONTROL_CODE_10 = BIT4, // 一击即中。当设置同步操作将只执行一次。当重置采样将触发在指定的时间，并在那里不断重复
    SYNCHRONIZATION_OPERATION_CONTROL_CODE_80 = BIT7, // 操作已启用。当设置时，操作被启用。当动作是一个“一次性”，那么使能位在动作发生后被重置
} synchronization_operation_control_code_e;

// 5.42 实时时钟标志
typedef enum
{
    REAL_TIME_CLOCK_FLAGS_1 = 1, // 非易失性时钟。当设置该设备包含一个电池支持时钟。在这种情况下，时钟不需要重置，如果有电源故障
    REAL_TIME_CLOCK_FLAGS_2 = 2, // 未初始化时钟。实时时钟从未设置过日期和时间。例如，时钟是不稳定的，电源从设备中移除并恢复到设备中
} real_time_clock_flags_e;

// 5.54 SI单位控制代码
typedef enum
{
    SI_UNITS_CONTROL_CODE_0 = 0x00, // 无限制(默认)
    SI_UNITS_CONTROL_CODE_1 = 0x01, // 单位代码仅限于SI单位
    SI_UNITS_CONTROL_CODE_MAX,
} si_units_control_code_e;

// 5.57 设备配置文件代码
typedef enum
{
    // 过程自动化装置
    DEVICE_CONFIGURATION_FILE_CODE_0 = 0x00,
    // 分立器件
    DEVICE_CONFIGURATION_FILE_CODE_1 = 0x01,
    // 混合:过程自动化+离散
    DEVICE_CONFIGURATION_FILE_CODE_3 = 0x03,
    // I/O系统
    DEVICE_CONFIGURATION_FILE_CODE_4 = 0x04,
    // 分立适配器
    DEVICE_CONFIGURATION_FILE_CODE_14 = 0x0E,
    // HART-IP过程自动化装置
    DEVICE_CONFIGURATION_FILE_CODE_65 = 0x41,
    // HART-IP分立器件
    DEVICE_CONFIGURATION_FILE_CODE_66 = 0x42,
    // HART-IP混合型过程自动化+离散
    DEVICE_CONFIGURATION_FILE_CODE_67 = 0x43,
    // HART-IP输入输出系统
    DEVICE_CONFIGURATION_FILE_CODE_68 = 0x44,
    // 无线HART过程自动化装置
    DEVICE_CONFIGURATION_FILE_CODE_129 = 0x81,
    // Wireless HART分立器件
    DEVICE_CONFIGURATION_FILE_CODE_130 = 0x82,
    // 无线HART混合:过程自动化+离散
    DEVICE_CONFIGURATION_FILE_CODE_131 = 0x83,
    // Wireless HART网关
    DEVICE_CONFIGURATION_FILE_CODE_132 = 0x84,
    // 无线HART接入点
    DEVICE_CONFIGURATION_FILE_CODE_140 = 0x8C,
    // Wireless HART进程适配器
    DEVICE_CONFIGURATION_FILE_CODE_141 = 0x8D,
    // Wireless HART离散适配器
    DEVICE_CONFIGURATION_FILE_CODE_142 = 0x8E,
    // 支持无线HART的手持式/便携式维护工具
    DEVICE_CONFIGURATION_FILE_CODE_144 = 0x90,
} device_configuration_file_code_e;

// 5.65 设备变量属性
typedef enum
{
    DEVICE_VARIABLE_PROPERTY_FLAGS_0 = 0,    // 可写入,设备变量被输入(例如，写入)到现场设备。
    DEVICE_VARIABLE_PROPERTY_FLAGS_8 = BIT7, // 不可写入，正在模拟设备变量。如果没有在现场设备中计算设备变量，则不得设置此位(例如，设备变量是设定值或远程传感器值
} device_variable_property_flags_e;

// 5.66 呼叫控制
typedef enum
{
    SQUAWK_CONTROL_CODE_0 = 0, // 关闭
    SQUAWK_CONTROL_CODE_1 = 1, // 打开
    SQUAWK_CONTROL_CODE_2 = 2, // 呼叫一次(在应答期间，请参阅设备特定文档)
} squawk_control_code_e;

// 5.67 事件管理器注册控制代码
typedef enum
{
    EVENT_MANAGER_REGISTRATION_CONTROL_CODE_0 = 0, // 注册
    EVENT_MANAGER_REGISTRATION_CONTROL_CODE_1 = 1, // 取消注册。事件管理器正在取消其注册重置
    EVENT_MANAGER_REGISTRATION_CONTROL_CODE_2 = 2, // 重新设置。重置事件管理器注册。不管命令请求的来源是什么，在收到请求后，都不会注册事件管理器
} event_manager_registration_control_code_e;
// A-1 设备操作状态
typedef enum
{
    // NONE
    DEVICE_OPERATIONAL_STATE_0 = 0,
    // 主变量超越极限PV已经超出了它的运行极限。
    DEVICE_OPERATIONAL_STATE_1 = BIT0,
    // 非主变量超越极限-A未映射到PV的设备变量超出其操作限制
    DEVICE_OPERATIONAL_STATE_2 = BIT1,
    // 回路电流饱和－回路电流已达到其上（或下） 端点限制，不能再增加（或减少）
    DEVICE_OPERATIONAL_STATE_3 = BIT2,
    // 回路电流固定1－环电流保持在一个固定的值，并没有响应进程的变化
    DEVICE_OPERATIONAL_STATE_4 = BIT3,
    // 更多状态可用－更多的状态信息可通过Command 48，读取额外的状态信息
    DEVICE_OPERATIONAL_STATE_5 = BIT4,
    // 冷启动－发生电源故障或设备重置
    DEVICE_OPERATIONAL_STATE_6 = BIT5,
    // 配置已更改－执行的操作更改了设备的配置
    DEVICE_OPERATIONAL_STATE_7 = BIT6,
    // 设备故障－设备检测到严重错误或故障，危及设备运行
    DEVICE_OPERATIONAL_STATE_8 = BIT7,
} device_operational_state_e;

// 5.69 定位方法代码
typedef enum
{
    LOCATION_METHOD_CODE_0 = 0, // 没有修复
    LOCATION_METHOD_CODE_1 = 1, // GPS或标准定位服务(SPS)修复
    LOCATION_METHOD_CODE_2 = 2, // 差分GPS定位
    LOCATION_METHOD_CODE_3 = 3, // 精确定位服务(PPS)修复
    LOCATION_METHOD_CODE_4 = 4, // 实时运动学(RTK)固定解
    LOCATION_METHOD_CODE_5 = 5, // 实时动态(RTK)浮动解决方案
    LOCATION_METHOD_CODE_6 = 6, // 估计航位推算
    LOCATION_METHOD_CODE_7 = 7, // 手动输入模式
    LOCATION_METHOD_CODE_8 = 8, // 仿真模式
} location_method_code_e;

// A-3 设备变量状态
typedef union
{
    uint8_t data;
    struct
    {
        uint8_t device_family_specific_status : 3,     // 设备系列特定状态
            more_device_variable_status_available : 1, // 更多的设备变量状态可用
            limit_status : 2,                          // 极限状态
            process_data_status : 2;                   // 过程数据状态
    } bits;
} device_variable_status_t;

typedef enum
{
    // 常数
    DEVICE_VARIABLE_STATUS_CONSTANT = 3,
    // 高的
    DEVICE_VARIABLE_STATUS_HIGHT_LIMIT = 2,
    // 低的
    DEVICE_VARIABLE_STATUS_LOW_LIMIT = 1,
    // 不限
    DEVICE_VARIABLE_STATUS_NO_LIMIT = 0,

    // 好的
    DEVICE_VARIABLE_STATUS_GOOD = 3,
    // 手动/固定
    DEVICE_VARIABLE_STATUS_MANUAL_FIXED = 2,
    // 准确性差
    DEVICE_VARIABLE_STATUS_POOR_ACCURACY = 1,
    // 坏的
    DEVICE_VARIABLE_STATUS_BAD = 0,
} device_variable_status_e;

// A-2 制造商设备特定状态文件
typedef enum
{
    DEVICE_SPECIFIC_STATUS_0 = 0,
    DEVICE_SPECIFIC_STATUS_1 = 1,
} device_specific_status_e;
#endif //__HART_COMMON_TABLES_SPECIFICATION_H__
